react-native如何用fetch和文件流的形式上传图片
有一个图片上传的需求,后端要求以文件流的形式提交
我用了react-native-image-picker组件选择的图片,选择图片之后返回的信息是这样的
data: "/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAA",
fileName: "IMG_0005.JPG",
fileSize: 3423356,
height: 2002,
isVertical: false,
latitude: 63.5314,
longitude: -19.5112,
origURL:
"assets-library://asset/asset.JPG?id=ED7AC36B-A150-4C38-BB8C-B6D696F4F2ED&ext=JPG",
timestamp: "2012-08-08T21:55:30Z",
type: "image/jpeg",
uri:
"file:///Users/xxxx/Library/Developer/CoreSimulator/Devices/65280F00-A9D6-4F41-86B8-4D1A1F645762/data/Containers/Data/Application/4D888114-A1B7-467C-B804-EE7DF70BD757/tmp/42D3F502-EFAB-4F9F-AA0E-739F39D610A2.jpg",
width: 3000,
看网上的介绍都是说把那个uri,name之类的放到formData里传给后端就行了,但是后端说这些信息只是图片的显示信息,不是文件流,那要怎么做呢 怎么得到这个文件流呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题已解决,主要是后端的锅
1、后端认为前端不需要传name,因为后端可以从文件流中获取name
2、后端认为前端传的不是文件流,因为后端拿不到name
其实
react-native-image-picker
获取的图片信息通过fetch传给后端的就是文件流,只不过前端传的参数是formData格式的,例如:formData.append('photo',{name: 'xxx.png',uri: '...'})
,然后这些参数会通过RN底层转为文件流。不过需要注意的是:
react-native-image-picker
获取的图片信息里没有name
属性,给后端传参数的时候需要加上,这一点跟web端上传不太一样。