我在尝试使用axios进行POST请求时遇到此错误:
TypeError: data should be a string, Buffer or Uint8Array
字符串
下面是我的代码片段:
var fs = require('fs'),
axios = require('axios');
var FormData = require('form-data');
var form = new FormData();
form.append('file', fs.createReadStream("qa_test_file_DOC.txlf"));
form.append('extractArchive', false);
let request_config = {
headers: {
'Authorization': `Bearer eyJhbGciOiJIUzI1NXXXX.....`,
...form.getHeaders()
}
}
let reqUrl = "https://XXXXX/XX/rest/v1/XXXXX";
try {
axios.post(reqUrl, form, request_config)
.then(function (response) {
console.log(response);
return callback(response);
})
.catch(function (error) {
console.log(error);
return callback(error);
});
} catch (ex) {
console.log("exception ", ex);
}
型
尝试使用管道,和大多数可能的解决方案。文件是存在的。不明白这里出了什么问题。Readstream中有什么吗?谢谢帮助。
3条答案
按热度按时间rseugnpd1#
在花了很多时间和尝试了很多可能的事情后,我观察到我得到的错误是。
字符串
在我的formData中,我将文件附加一个变量,
型
这只是布尔值,axios或formData会给出错误。我将其更改为,
型
这解决了我的问题。如果有人跑步是这样的问题,可能会有帮助。
谢谢你的帮忙。
eni9jsuy2#
这一行:
字符串
您在
form
参数中传递了一个FormData
对象。Axios(在NodeJS中使用时)需要string
、Buffer
或Uint8Array
。当在浏览器中使用Axios时,它只是 Package 了
fetch
,这允许直接使用FormData
),但是当在NodeJS中使用时,您需要序列化自己的请求主体(由于Boundary
字段等,序列化为multipart/form-data
可能会很痛苦)。假设你 * 实际上 * 想要发出一个
multipart/form-data
请求,那么:multipart/form-data
请参阅此答案:Post form data with axios in Node.jsiq0todco3#
更新 axios
用于节点
字符串