ReactNative实现图片上传功能的示例代码


Posted in Javascript onJuly 11, 2017

最近在学习ReactNative,ReactNative可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App,今天就学习一下ReactNative实现图片上传功能

在查看ReactNative的官方文档的时候,你会发现其实Fackbook是没有提供图片上传功能的。

如果我们的项目里需要使用图片上传(用js 实现图片上传),那我们有没有什么办法呢?

通过搜索React-native的github, 会发现里面有这么一篇文章:https://github.com/facebook/react-native/issues/5308

解决方案:

采用FormData来实现,FormData 的API参考:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData

利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单".

那么我们就来看看在RN里怎么做,贴代码:

uploadImage(){ 
 let formData = new FormData(); 
 let file = {uri: uri, type: 'multipart/form-data', name: 'a.jpg'}; 
 
 formData.append("images",file); 
 
 fetch(url,{ 
 method:'POST', 
 headers:{ 
  'Content-Type':'multipart/form-data', 
 }, 
 body:formData, 
 }) 
 .then((response) => response.text() ) 
 .then((responseData)=>{ 
 
 console.log('responseData',responseData); 
 }) 
 .catch((error)=>{console.error('error',error)}); 
 
}

1、首先我们new了一个FormData

2、创建一个file对象,uri是什么?如下示例:

Android:  file:///storage/emulated/0/Pictures/eb645893-4c00-44a3-a9b4-a2116e955f7c.jpg

ios: /Users/ashleydw/Library/Developer/CoreSimulator/Devices/23EE88D0-6E91-43AD-A3B6-06F87698C5A8/data/Containers/Data/Application/A73E68D3-7424-4301-9934-AD0F8251C1EB/tmp/7803DA8A-0E40-4FCB-A593-884805878172.jpg

3、设置header

'Content-Type':'multipart/form-data',

4、将创建好的FormData赋值给body

这样我们就完成了图片上传的功能。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
jquery延迟对象解析
Oct 26 Javascript
js实现3d悬浮效果
Feb 16 Javascript
详解create-react-app 自定义 eslint 配置
Jun 07 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
JavaScript实现单图片上传并预览功能
Sep 30 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 Javascript
详解Vue中Axios封装API接口的思路及方法
Oct 10 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 #Javascript
ReactNative之键盘Keyboard的弹出与消失示例
Jul 11 #Javascript
react-native 封装选择弹出框示例(试用ios&android)
Jul 11 #Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
Jul 11 #Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 #Javascript
使用jQuery实现动态添加小广告
Jul 11 #jQuery
Vue中父组件向子组件通信的方法
Jul 11 #Javascript
You might like
基于PHP生成静态页的实现方法
2013/05/10 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
vue中的inject学习教程
2019/04/24 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python中的__slots__示例详解
2017/07/06 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
jupyter notebook 重装教程
2020/04/16 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
英文推荐信格式范文
2014/05/09 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
悬空寺导游词
2015/02/05 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android