美文网首页让前端飞React-Native 开发阵营
教你React Native使用fetch实现图片上传

教你React Native使用fetch实现图片上传

作者: a333661d6d6e | 来源:发表于2018-12-15 22:19 被阅读0次

    本篇文章主要介绍了React Native使用fetch实现图片上传的示例代码,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

    普通网络请求参数是JSON对象
    图片上传的请求参数使用的是formData对象

    使用fetch上传图片代码封装如下:

    let common_url = 'http://192.168.1.1:8080/'; //服务器地址
    let token = '';  //用户登陆后返回的token
    /** 
     * 使用fetch实现图片上传
     * @param {string} url 接口地址
     * @param {JSON} params body的请求参数
     * @return 返回Promise 
     */
    function uploadImage(url,params){
      return new Promise(function (resolve, reject) {
        let formData = new FormData();
        for (var key in params){
          formData.append(key, params[key]);
        }
        let file = {uri: params.path, type: 'application/octet-stream', name: 'image.jpg'};
        formData.append("file", file);
        fetch(common_url + url, {
          method: 'POST',
          headers: {
            'Content-Type': 'multipart/form-data;charset=utf-8',
            "x-access-token": token,
          },//欢迎加入前端全栈开发交流圈一起学习交流:864305860
          body: formData,
        }).then((response) => response.json())
          .then((responseData)=> {
            console.log('uploadImage', responseData);
            resolve(responseData);
          })
          .catch((err)=> {
            console.log('err', err);
            reject(err);
          });
      });
    }//欢迎加入前端全栈开发交流圈一起学习交流:864305860
    

    使用方法

    let params = {
      userId:'abc12345',  //用户id
      path:'file:///storage/emulated/0/Pictures/image.jpg'  //本地文件地址
    }
    uploadImage('app/uploadFile',params )
      .then( res=>{
        //请求成功
        if(res.header.statusCode == 'success'){
          //这里设定服务器返回的header中statusCode为success时数据返回成功
          upLoadImgUrl = res.body.imgurl; //服务器返回的地址
        }else{
           //服务器返回异常,设定服务器返回的异常信息保存在 header.msgArray[0].desc
          console.log(res.header.msgArray[0].desc);
        }
      }).catch( err=>{ 
         //请求失败
      })//欢迎加入前端全栈开发交流圈一起学习交流:864305860
    

    注意:由于后台服务器配置的不同,
    let file = {uri: params.path, type: 'application/octet-stream', name: 'image.jpg'}中的type也可能是multipart/form-data
    formData.append("file", file)中的的file字段也可能是images

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。

    本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:教你React Native使用fetch实现图片上传

        本文链接:https://www.haomeiwen.com/subject/tkrzhqtx.html