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的ajax需要注意的地方dataType的设置
Aug 12 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
Node.js 学习笔记之简介、安装及配置
Mar 03 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 Javascript
Vue-Router模式和钩子的用法
Feb 28 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
Aug 06 Javascript
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
使用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_merge函数运算符加号与的区别
2008/10/31 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
拖动时防止选中
2017/02/03 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
原生js实现自定义滚动条
2021/01/20 Javascript
Python遍历指定文件及文件夹的方法
2015/05/09 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
解析Python中while true的使用
2015/10/13 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Python中的集合介绍
2019/01/28 Python
python如何实现代码检查
2019/06/28 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
初学者学习Python好还是Java好
2020/05/26 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
python 装饰器重要在哪
2021/02/14 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
Python中tqdm的使用和例子
2022/09/23 Python