FormData发送字符串值而不是react-native中的视频文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FormData发送字符串值而不是react-native中的视频文件相关的知识,希望对你有一定的参考价值。
我正在尝试使用FormData将视频上传到后端服务器。但是,当上传视频文件时,后端获取的是字符串值而不是视频文件。谢谢
const formData = new FormData();
formData.append('dare_id', `$encrypted_id`);
formData.append(
'video',
Platform.OS === 'android'
? uri //local video file uri
: uri.replace('file://', ''), //local video file uri
);
fetch(UPLOAD_URL,
method: 'POST',
headers:
'Content-Type': 'multipart/form-data',
Authorization: `Bearer $token`,
Accept: 'application/json',
,
body: formData,
)
.then(res => res.json())
.then(responseJson =>
console.log(responseJson);
)
.catch(error =>
console.log(error, ' error uploading');
);
答案
没有Content-Type
标头,请重试。这是一篇文章:https://muffinman.io/uploading-files-using-fetch-multipart-form-data/
在使用Axios以相同的方式发送文件之前,我遇到了这个问题。该库足够聪明,可以正确设置标题,除非您添加它们。我怀疑您看到与边界设置有关的错误,该错误必须准确。
因此,而不是显式设置标题,请尝试依赖默认值,并允许fetch(或axios)根据表单字段之一的文件类型包含正确设置标题。
另一答案
要上传文件,您还必须插入文件类型和文件名。这是他的代码:
let formData=new FormData();
formData.append(uri:yourNormalizedUri,type:”I dont know exactly but it should be video/mp4 google it”, name:”video.mp4”);
以上是关于FormData发送字符串值而不是react-native中的视频文件的主要内容,如果未能解决你的问题,请参考以下文章