尝试使用axios进行POST请求时出现此错误:
Error: Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream at createError
这是我的要求:
async function fetchAndHandleErrors() {
const url = `/claim/${claimId}`;
const headers = {
Accept: 'application/json',
Authorization: `Bearer ${token}`,
};
const body = new FormData();
body.append('damage_description', damageDescription);
body.append('damaged_phone', {
uri: imageUri,
type: 'image/jpeg', // or photo.type
name: imageUri,
});
const result = await axios({
'post',
url: `${baseUrl}${url}`,
data: body,
headers,
});
return result.data;
}
我尝试删除result.data
,但仍然遇到相同的错误。为什么会这样?
答案 0 :(得分:0)
如果您最终仍然需要解决方案,则可以使用formData.pipe()
方法来解决此错误。对于您的情况,可能看起来像这样:
import axios from 'axios'
import concat from 'concat-stream'
import fs from 'fs'
import FormData from 'form-data'
async function fetchAndHandleErrors() {
const file = fs.createReadStream(imageUri)
let body = new FormData();
body.append('damage_description', damageDescription);
body.append('damaged_phone', file);
body.pipe(concat(data => {
const url = `/claim/${claimId}`;
const headers = {
'Authorization': `Bearer ${token}`,
...body.getHeaders()
};
const result = await axios({
'post',
url: `${baseUrl}${url}`,
data: body,
headers,
});
return result.data;
}))
}
如果您仍然遇到问题,请告诉我,我们将很乐意为您提供帮助!