我正在尝试使用formdata将图像上传到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模拟器 这是我的图片网址-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
我也可以知道什么是最好的,最有效的方法来完成这项工作。
谢谢。
答案 0 :(得分:0)
我认为Firebase在默认情况下不接受多部分/表单数据请求,因此您需要考虑启用它以使请求正常工作。
因此,您可以使用Firebase来处理multipart / form-data请求,并使用另一种服务将文件发送到其中,例如Cloud Storage for Firebase。
或者,如果您的文件不会太大,又不想配置Firebase也不启用multipart / form-data请求,则可以将文件作为Base64字符串发送,然后进行firebase解码请求处理程序中的base64字符串,并按计划处理图像。
记住以Base64格式发送将使数据大小增加约1/3,以及将图像转换为base64所需的前端计算。