几天来我一直在努力上传图片。 我正在使用这样的formdata:
let formData = new FormData();
formData.append('file', {
uri: uri,
name: `name`,
type: `image/jpeg`,
});
iOS上的 uri与Android上的asset-library://asset/path
类似,content://media/external/images/media/25377
也是如此。
let options = {
method: 'POST',
body: formData,
headers: {
Accept: 'application/json',
'Authorization': 'Bearer ' + token,
},
};
let response = await fetch("https://myserverurl", options)
我尝试了所有技巧,将图像读取为斑点,删除了内容类型,以及其他类似axios的库等。 不管我总是得到400错误的文件格式错误。
formdata是否缺少某些内容? (在后端,我们使用ASP.NET)
答案 0 :(得分:0)
我们遇到了类似的问题,并能够通过以下方式解决该问题。 我们正在使用NodeJS后端(带有multer)来处理文件上传。
Expo-移动应用代码
// extract the filetype
let fileType = uri.substring(uri.lastIndexOf(".") + 1);
let formData = new FormData();
formData.append("photo", {
uri,
name: `photo.${fileType}`,
type: `image/${fileType}`
});
let options = {
method: "POST",
body: formData,
headers: {
Accept: "application/json",
"Content-Type": "multipart/form-data"
}
};
我们正在使用fetch(apiUrl, options)
执行请求。
在我们的案例中,uri
是照片的本地文件路径(完整的URI,例如file:///...
),apiUrl
是服务器端的端点。
我认为问题可能与表单数据中uri
的类型和格式有关。您是否尝试过使用图像选择器返回的uri
?