我正在尝试使用表单数据将图像上传到firebase。但是我得到了这个错误
"Invalid data; couldn't parse JSON object, array, or value."
这是我的代码
const formData = new FormData();
formData.append('Lname', 'aa');
formData.append('FName', 'aas');
formData.append('image', {
url:image,
name:'profilePic.jpg',
type: 'image/jpg'
})
const request = axios({
method: 'POST',
url:`https://test2card-e8014.firebaseio.com/profileInfo.json`,
data: formData,
headers: {
'Content-Type': 'multipart/form-data;',
},
}).then( response => {
console.log('log', response.data)
return response.data
}).catch(e=>{
console.log('err',e.response.data)
})
和我使用ios模拟器这个我的图像url - file:/// Users / kk / Library / Developer / CoreSimulator / Devices / 3ED3277A-DE0C-478A-AFAE-FE24D67A76DB / data / Containers / Data / Application / D091EAA9-E390-49C8 -AFF7-E862A6A8B93A /文档/图像/ F0FDE0FB-84FE-43BB-8F0C-25D52A223703.jpg
我也可以知道什么是最好和最有效的方法来完成这项工作。
谢谢。
我不认为Firebase默认接受多部分/表单数据请求,因此您需要查看启用它以使您的请求生效。
因此,您可以使用firebase获取multipart / form-data请求,使用其他服务将文件发送到Cloud Storage for Firebase。
或者,如果您的文件不会太大,并且您不想配置Firebase也启用multipart / form-data请求,您可以将文件作为Base64字符串发送,然后让firebase解码base64字符串在请求处理程序中,按照您的计划处理您的图像。
记住发送为Base64会将数据大小增加~1 / 3,以及前端将图像转换为base64所需的计算。