React Native使用fetch实现图片上传的示例代码


Posted in Javascript onMarch 07, 2018

本文介绍了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,
      },
      body: formData,
    }).then((response) => response.json())
      .then((responseData)=> {
        console.log('uploadImage', responseData);
        resolve(responseData);
      })
      .catch((err)=> {
        console.log('err', err);
        reject(err);
      });
  });
}

使用方法

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=>{ 
     //请求失败
  })

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
JS 两个字符串时间的天数差计算
Aug 25 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
DOM节点深度克隆函数cloneNode()用法实例
Jan 12 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
Jan 15 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
Aug 08 Javascript
Javascript下拉刷新的简单实现
Feb 14 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 28 Javascript
js数组的基本使用总结
Jan 18 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 #Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 #Javascript
关于Vue的路由权限管理的示例代码
Mar 06 #Javascript
vue.js在标签属性中插入变量参数的方法
Mar 06 #Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 #Javascript
解决vue build打包之后首页白屏的问题
Mar 06 #Javascript
vue2.0 路由不显示router-view的解决方法
Mar 06 #Javascript
You might like
php array_map()数组函数使用说明
2011/07/12 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
不同浏览器的怪癖小结
2010/07/11 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
js实现小时钟效果
2020/03/25 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
python中rb含义理解
2020/06/18 Python
Python如何将字符串转换为日期
2020/07/31 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
大学军训通讯稿
2014/01/13 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
教师先进事迹材料
2014/12/16 职场文书
领导干部失职检讨书
2015/05/05 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
Java详细解析==和equals的区别
2022/04/07 Java/Android
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS