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 相关文章推荐
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
Feb 05 Javascript
JavaScript 32位整型无符号操作示例
Dec 08 Javascript
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
Bootstrap Validator 表单验证
Jul 25 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 Javascript
Angularjs2不同组件间的通信实例代码
May 06 Javascript
理解javascript async的用法
Aug 22 Javascript
实现一个Vue自定义指令懒加载的方法示例
Jun 04 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编程效率的方法
2013/11/07 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
Python实现快速多线程ping的方法
2015/07/15 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
python实现五子棋游戏
2019/06/18 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python类的实例化问题解决
2019/08/31 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
企业人事任命书
2014/06/05 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python