用 axios 在 react native 中上传图片

Posted

技术标签:

【中文标题】用 axios 在 react native 中上传图片【英文标题】:Upload image with axios in react native 【发布时间】:2020-10-22 04:20:35 【问题描述】:

我想在 React Native 中上传图片并使用 react-native-cameraroll 获取图片:

我试试这个来发送数据:

const fileName = photo.node.image.filename || photo.node.image.uri.split("/").reverse()[0];
body.append(
  "photo",
   uri: photo.node.image.uri, type: photo.node.type, name: fileName ,
);

但不起作用。发送到服务器的是photo: [object Object]

我也试过JSON.parse( uri: photo.node.image.uri, type: photo.node.type, name: fileName )

在邮递员上传作品中,什么帖子给我的代码是 axios 的:

data.append('photo', fs.createReadStream('SRC/FILE_NAME.png'));

这适用于 XHR:

data.append("photo", fileInput.files[0], "FILE_NAME.png");

如何使用这些代码上传图片?

【问题讨论】:

【参考方案1】:

在调试器 react-native 中,您需要删除调试器全局配置才能使 FormData 工作。

例如:

GLOBAL.XMLHttpRequest = GLOBAL.originalXMLHttpRequest || GLOBAL.XMLHttpRequest

参考问题: https://github.com/jhen0409/react-native-debugger/issues/38

【讨论】:

应该把它们放在哪里? 删除项目中的所有全局设置,您可以转到参考链接了解更多详情 我应该在哪里找到全局设置?【参考方案2】:

使用 react-native-image-crop-picker github 链接是https://github.com/ivpusic/react-native-image-crop-picker 来挑选图片

_handlePhotoPress = () => 
    ImagePicker.openPicker(
      width: 200,
      height: 200,
      cropping: true,
      mediaType: 'photo'
    )
      .then(image => 
        this.setState( pic: image.sourceURL, file: image )
        console.log(image)
        const formData = new FormData()
        formData.append('file', image)
        formData.append('upload_preset', 'XXXX')
        return axios(
              method: 'post',
              url: 'yourUrl',
              data: formData,
              headers: 'Content-Type': 'multipart/form-data' 
              )
              .then(function (response) 
                  //handle success
                  console.log(response);
              )
              .catch(function (response) 
                  //handle error
                  console.log(response);
              );
      )
      .catch(err => 
        console.log(JSON.stringify(err));
     )
  

https://github.com/ivpusic/react-native-image-crop-picker 选择图片

【讨论】:

我想在我的应用程序中显示照片而不是打开用户图库。

以上是关于用 axios 在 react native 中上传图片的主要内容,如果未能解决你的问题,请参考以下文章

React Native - Axios - 尝试上传图片

react-native 请求封装

AXIOS 调用在 React-Native 0.63 中给出网络错误

无法通过 npm install axios 在 React Native 中安装 Axios

关于React Native使用axios进行网络请求的方法

使用 axios 在 react-native 中使用 POST 方法获取 API 数据