我正在努力通过expo使用React Native将图像上传到服务器上。
当我使用Insomnia时没有问题,因此我的后端可以正常工作,除了名称为file
的多部分外。
我正在使用ImagePicker
中的expo-image-picker
。
但是当我创建FormData
并将其发送时,出现了400错误:no file uploaded
。
这是我的代码:
_pickImage = async () => {
try {
let result = await ImagePicker.launchCameraAsync({
allowsEditing: true,
aspect: [4, 3],
quality: 1
});
if (!result.cancelled) {
await this._postAvatar(result)
}
} catch (error) {
console.log(error);
}
}
async function postAvatar(result) {
let localUri = Platform.OS === "android" ? result.uri : result.uri.replace("file://", "")
let filename = localUri.split('/').pop();
// Infer the type of the image
let match = /\.(\w+)$/.exec(filename);
let type = match ? `image/${match[1]}` : `image`;
const formData = new FormData();
formData.append('file', { uri: localUri, name: filename, type });
return axios.post(API_ENTRYPOINT + '/media_objects', formData, {
headers: {
'Content-Type': 'multipart/form-data, boundary: ---01100001011100000110100',
}
}).then(response => response.data)
}
当我登录formData
时,得到的对象除外。
另外,当我尝试登录formData.get('file')
时,也会收到错误消息:formData.get is not a function
。