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 相关文章推荐
JQuery 学习笔记 element属性控制
Jul 23 Javascript
json格式的时间显示为正常年月日的方法
Sep 08 Javascript
jquery分页对象使用示例
Apr 01 Javascript
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
jquery插件jquery.confirm弹出确认消息
Dec 22 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
微信小程序实现图片预加载组件
Jan 18 Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 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读取excel文件的简单实例
2013/08/26 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP分享图片的生成方法
2018/04/25 PHP
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
JS中数组重排序方法
2016/11/11 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
js判断是否是手机页面
2017/03/17 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
利用Python破解斗地主残局详解
2017/06/30 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
研发工程师的岗位职责
2013/11/18 职场文书
停电调休通知
2015/04/16 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸