我有在网络中使用的redux操作。我们在反应本机项目中使用这些操作,以便我们可以在web和native之间共享逻辑,只更改组件。
其中一项操作(图片上传)以File
为参数。我们管理了如何以原生方式获取图像信息 - 我们正在使用react-native-image-picker
。当用户选择图像时,它会返回包含所有数据的响应。
let file = new File([atob(response.data)],
response.fileName,
{type: response.type})
但是,这并不适用于本地反应,网络上没有File
构造函数。我不能使用File
的替代方法,因为在web和native之间共享的redux操作需要File
。
如何在react-native中创建File
?
答案 0 :(得分:0)
AFAIK即使在网络上你也无法创建文件,甚至更多,如果你试图用Object.keys()
获取File对象的键,你什么也得不到,我不知道是不是因为它意味着作为浏览器上文件的表示,但实际使用的是Blob
,即二进制大对象文件,基本上是内存中的文件,如果您从端点获取数据,使用方法:
fetch('/endpoint')
.then(res) {
res.blob()
}
.then(blob) {
// Do whatever you want with your blob
}
如果没有,你可以new Blob([response.data], {type: response.type})
请注意,blob没有名称,您稍后将使用库处理
此库https://github.com/wkh237/react-native-fetch-blob和文档https://github.com/wkh237/react-native-fetch-blob/wiki/File-System-Access-API可能很有用