react-native如何用fetch和文件流的形式上传图片

发布于 2022-09-12 23:18:41 字数 932 浏览 24 评论 0

有一个图片上传的需求,后端要求以文件流的形式提交
image.png
我用了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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一场信仰旅途 2022-09-19 23:18:41

问题已解决,主要是后端的锅
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端上传不太一样。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文