我正在尝试使用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');
});
答案 0 :(得分:0)
在没有Content-Type
标头的情况下重试。这是一篇文章:https://muffinman.io/uploading-files-using-fetch-multipart-form-data/
在使用Axios以相同的方式发送文件之前,我遇到了这个问题。该库足够聪明,可以正确设置标题,除非您添加它们。我怀疑您看到与边界设置有关的错误,该错误必须准确。
因此,与其明确地设置标题,不如尝试依靠默认值,并允许fetch(或axios)根据表单字段之一的文件类型包含正确地设置标题。
答案 1 :(得分:0)
要上传文件,您还必须插入文件类型和文件名。这是他的代码:
let formData=new FormData();
formData.append({uri:yourNormalizedUri,type:”I dont know exactly but it should be video/mp4 google it”, name:”video.mp4”});