我正在尝试并无法通过故障主机上的节点bot将文件从s3转换为松弛文件。
我正在克隆的故障项目使用公理来发出Web请求。我正在请求将s3文件读取为字符串,然后将内容放入并将其放入对files.upload的请求中。 Files.upload通过发布获取表单数据。
对于如何构造表单数据的“文件”参数以获取字符串,我还不太清楚,但是以下内容返回“ invalid_arg_name”错误。
var Readable = require('stream').Readable;
// ...
const upload = new FormData();
upload.append("channels", destinationChannel);
const s = new Readable();
s.push("example s3 file content string");
s.push(null);
upload.append("file", s);
const config = {
headers: {'Authorization': "Bearer " + myAccessToken},
'Content-Type': 'multipart/form-data',
};
axios.post(`${apiUrl}/files.upload`, upload, config)
.then((result) => {
console.log('uploaded file');
console.log(result.data);
});
文档还说它采用url编码形式,但我不确定或采用什么结构才能处理我想通过发送的10千字节文件这种方法。
如果我们可以修复此方法,那将很好,但是,如果有一种更简便的方法来将公共URL馈送到slack的files.upload中,我也将采用这种方法。
答案 0 :(得分:0)
即使通过3k行日志文件,也可以通过querystring通过url编码使它工作:
const upload = {
channels: channel,
content: "s3 file content",
};
console.log(upload);
const config = {
headers: { 'Authorization': "Bearer " + myAccessToken },
'Content-Type': 'application/x-www-form-urlencoded'
};
axios.post(`${apiUrl}/files.upload`, qs.stringify(upload), config)
.then((result) => {
console.log('uploaded file');
}).catch((err) => {
console.log('err on files upload %0', err);
});
我不确定它会分解成多大,因此我希望以某种方式使formdata工作。