gpt4 book ai didi

node.js - 松弛文件上传中的 no_file_data 响应

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:43 32 4
gpt4 key购买 nike

我正在使用node.js尝试通过slackAPI的上传文件方法上传csv文件。方法是post。我不确定如何实现这一点,因为如果我使用内容参数而不是文件,我会收到错误:

{ ok: false, error: 'invalid_array_arg' }

如果我使用文件参数,我仍然会收到错误:

{ ok: false, error: 'invalid_array_arg' }

这段代码中有多个错误点,我已经尝试测试每个错误点,但我确信我在这里遗漏了一些信息。这是我创建的 uploadFile 方法:

function uploadFile(file){
console.log(botToken);
axios.post('https://slack.com/api/files.upload', qs.stringify({token: botToken, file: file, channels: 'testing'}))
.then(function (response) {
var serverMessage = response.data;
console.log(serverMessage);
console.log("inside file upload function");
})
}

这是我调用该方法的方式:

var file = fs.createReadStream(__dirname + '/' + csvFilePath);   // <--make sure this path is correct
console.log(__dirname + '/' + csvFilePath);
uploadFile(file);

最后是输出:

机器人已启动!C:\Users\i502153\WebstormProjects\slackAPIProject/accessLogs/CSV/1548430592860output.csv* { 好的:错误,错误:'invalid_array_arg' } 内部文件上传功能

我做错了什么以及如何纠正这个问题?

链接: https://api.slack.com/methods/files.upload https://www.npmjs.com/package/axios

最佳答案

您的解决方案将不起作用,因为您尝试获取流对象(文件)并将其字符串化为查询字符串,这只会将无意义的字符串“[object]”插入到查询中。它实际上不会将数据传输到 Slack。

不幸的是,Axios 在 Node 中的工作方式与在浏览器中的工作方式不同,而且它们的文档可能有点令人困惑。

我建议采用这样的方法(未经测试):

const axios = require('axios');
const FormData = require('form-data');

function uploadFile(file) {
const form = new FormData();
form.append('token', botToken);
form.append('channels, 'testing');
form.append('file', file, 'optionalfilenamehere');
return axios.post('https://slack.com/api/files.upload', form, {
headers: form.getHeaders()
}).then(function (response) {
var serverMessage = response.data;
console.log(serverMessage);
console.log('inside file upload function');
});
}

我根据票证 https://github.com/axios/axios/issues/1006#issuecomment-320165427 中的建议改编了此代码,如果您遇到问题,那里可能还有其他有用的评论。祝你好运!

编辑:对于稍后阅读本文的人,对于使用 request 而不是 axios 的类似方法,请参阅相关问题 Slack API (files.upload) using NodeJS .

关于node.js - 松弛文件上传中的 no_file_data 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54368616/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com