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 相关文章推荐
一个不错的应用,用于提交获取文章内容,不推荐用
Mar 03 Javascript
js中键盘事件实例简析
Jan 10 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
JS中setTimeout的巧妙用法前端函数节流
Mar 24 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
浅谈vue-router 路由传参的方法
Dec 27 Javascript
vue中如何去掉空格的方法实现
Nov 09 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
Apr 22 Javascript
element-ui table组件如何使用render属性的实现
Nov 04 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 Javascript
简单了解前端渐进式框架VUE
Jul 20 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.MVC的模板标签系统(三)
2006/09/05 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
详解php命令注入攻击
2019/04/06 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
浅析JavaScript动画
2015/06/10 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
python根据文本生成词云图代码实例
2019/11/15 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
工作过失检讨书
2014/02/23 职场文书
现场施工员岗位职责
2014/03/10 职场文书
投资建议书模板
2014/05/12 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
大四学生个人总结
2015/02/15 职场文书
2014年个人总结范文
2015/03/09 职场文书
信用卡收入证明范本
2015/06/12 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL