我使用react-native-image-picker从IOS设备(仿真器)获取图像,这是我的代码:
try {
ImagePicker.launchImageLibrary(
{
quality: 0.7,
storageOptions:{
skipBackup:true,
cameraRoll:true,
waitUntilSaved:true
}
},
(response) => {
console.log(response);
if (response.didCancel || response.error === "Camera not available on simulator") return;
camera(response);
}
);
} catch (e) {
console.log(e);
}
之后,我有了带有uri,origURL,数据和其他参数的对象 我尝试使用以下代码将此图像上传到服务器:
const postFormData = (url, formData, token) => {
return fetch(URL_API + url, {
body: formData,
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "multipart/form-data",
Authorization: 'Bearer ' + token,
},
})
.then(response => {console.log(response); return response.json()})
.catch(error => {
console.log(error);
alert("Upload failed!");
});
}
我的formData:
photo = {
uri: Platform.OS === 'ios' ? image.origURL.replace("file://", "") : image.uri,
type: image.type,
name: image.fileName,
data: image.data,
};
var form = new FormData();
form.append("image",photo);
我尝试origUrl,uri,尝试以下方法:'data:image/jpeg;base64,' + image.data
,而不是uri,尝试使用replace("file://", "")
,如果没有replace("file://", "")
,则所有方法都无效。
如果我尝试使用uri上传,则会出现此错误:
如果我尝试使用'data:image/jpeg;base64,' + image.data
而不是uri上传,则控制台中会出现一些错误。
如何上传图片?也许仅在iOS模拟器上会出现此问题?请帮助!))
答案 0 :(得分:0)
我不知道为什么不能使用image.origURL和image.uri上传图像,但是当我插入uri data:image/jpeg;base64,' + image.data
时,由于文件大小而无法上传图像,这也是很大,现在我在imagePicker选项中使用了质量0.1,并且一切正常(对不起,我的英语)))