[英]React-Native send multipart/form-data through HTTP
我有一个本机应用程序,需要将视频/图像发送到我的服务器。 我已经知道正常的帖子可以工作,但是当我尝试发送formData对象时,似乎永远不会离开电话。 这是我的代码。
// method = 'POST';
// body = new formData();
// body contains text data and image/video file
const post = (url, body, token, method) => {
let xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.setRequestHeader('Authorization', 'Bearer' + token);
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=---------------------------7692764ac82');
xhr.send(body);
console.log(xhr);
return xhr.response;
}
body是一个包含图像/视频的formData对象。 在xhr在控制台日志中打印的对象中,_response包含“二进制FormData部分需要内容类型标头”。 但是看来我正确设置了吗?
请帮助,还有其他类似的问题,但我的想法已经用完了。 我也曾尝试使用获取未成功。
错误消息与请求(您已设置)的内容类型标头无关,而与零件 (您未显示的内容类型标头)有关,因此我们假设它丢失了。
当您将零件添加到FormData
,请不要忘记添加type
。 图片示例:
const body = new FormData();
// ...
body.append('image', {
uri: 'file:///...',
type: 'image/jpeg', // <- Did you miss that one?
name: 'someName',
});
正确设置type
,React Native运行时应为零件添加一个content-type
标头。 这是在v0.46.0 中第79行的FormData.js
中完成的(其中value
是您的type
属性的值):
if (typeof value.type === 'string') {
headers['content-type'] = value.type;
}
因此,当缺少type
则缺少该部件的 content-type
标头,然后在Android上结束于此处 ,您可以在其中看到错误消息的来源。
这个确切的错误和根本原因在GitHub问题中进行了讨论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.