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 相关文章推荐
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
Aug 08 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
Aug 19 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
Mar 23 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
Jul 03 Javascript
JavaScript实现的简单加密解密操作示例
Jun 01 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
bootstrap下拉分页样式 带跳转页码
Dec 29 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
Feb 15 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
使用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 数组处理函数extract详解及实例代码
2016/11/23 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
Python脚本实现代码行数统计代码分享
2015/03/10 Python
python实现简单温度转换的方法
2015/03/13 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
《明天,我们毕业》教学反思
2014/04/24 职场文书
超市理货员岗位职责
2014/07/04 职场文书
人力资源职位说明书
2014/07/29 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
小学生教师节广播稿
2015/08/19 职场文书
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android