将本机上传图像反应到iOS上的服务器

时间:2020-09-29 12:06:00

标签: react-native file-upload react-native-ios

我使用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上传,则会出现此错误:enter image description here

如果我尝试使用origURL上传,则会出现此错误:enter image description here

如果我尝试使用'data:image/jpeg;base64,' + image.data而不是uri上传,则控制台中会出现一些错误。

如何上传图片?也许仅在iOS模拟器上会出现此问题?请帮助!))

1 个答案:

答案 0 :(得分:0)

我不知道为什么不能使用image.origURL和image.uri上传图像,但是当我插入uri data:image/jpeg;base64,' + image.data时,由于文件大小而无法上传图像,这也是很大,现在我在imagePicker选项中使用了质量0.1,并且一切正常(对不起,我的英语)))