博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React Native使用fetch实现图片上传
阅读量:4086 次
发布时间:2019-05-25

本文共 2392 字,大约阅读时间需要 7 分钟。

关于  网络请求的封装,可以参考我写的文章:http://blog.csdn.net/withings/article/details/71363433

普通网络请求参数是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); }); });}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

使用方法

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=>{          //请求失败    }) 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

注意:由于后台服务器配置的不同, 
let file = {uri: params.path, type: 'application/octet-stream', name: 'image.jpg'}中的type也可能是multipart/form-data 
formData.append("file", file)中的的file字段也可能是images

你可能感兴趣的文章
【Unity】使用GPS定位经纬度
查看>>
【UGUI/NGUI】一键换Text/Label字体
查看>>
【C#】身份证本地验证
查看>>
【Unity】坑爹的Bug
查看>>
【算法】求数组中某两个数的和为目标值
查看>>
sql server如何编辑超过前200行的数据
查看>>
如何高效学习动态规划?
查看>>
动态规划法(六)鸡蛋掉落问题(一)
查看>>
LeetCode 887.鸡蛋掉落(C++)
查看>>
Dijkstra‘s algorithm (C++)
查看>>
奇异值分解(SVD)的原理详解及推导
查看>>
算法数据结构 思维导图学习系列(1)- 数据结构 8种数据结构 数组(Array)链表(Linked List)队列(Queue)栈(Stack)树(Tree)散列表(Hash)堆(Heap)图
查看>>
求LCA最近公共祖先的离线Tarjan算法_C++
查看>>
Leetcode 834. 树中距离之和 C++
查看>>
【机器学习】机器学习系统SysML 阅读表
查看>>
最小费用最大流 修改的dijkstra + Ford-Fulksonff算法
查看>>
最小费用流 Bellman-Ford与Dijkstra 模板
查看>>
实现高性能纠删码引擎 | 纠删码技术详解(下)
查看>>
RS(纠删码)技术浅析及Python实现
查看>>
二叉搜索树、完全二叉树、平衡二叉树 Python实现
查看>>