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 相关文章推荐
ExtJS 入门
Oct 29 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
BootStrap无限级分类(无限极分类封装版)
Aug 26 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
vue.js $refs和$emit 父子组件交互的方法
Dec 20 Javascript
详解vue添加删除元素的方法
Jun 30 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
JavaScript canvas实现雨滴特效
Jan 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
ADODB的数据库封包程序库
2006/12/31 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
python生成九宫格图片
2018/11/19 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
Python argparse模块应用实例解析
2019/11/15 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
Python networkx包的实现
2020/02/14 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
python简单实现9宫格图片实例
2020/09/03 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
如何理解transaction事务的概念
2015/05/27 面试题
公司行政经理岗位职责
2013/12/24 职场文书
客户答谢会活动方案
2014/08/31 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫