我有一个 React Native (0.59) 应用程序,它使用一个(Swagger 生成的)SDK,该 SDK 接受 Blob
对象进行文件上传。虽然有关于从远程资源创建 blob 的资源(例如使用 fetch),但我找不到任何关于动态创建 blob 的资源。例如我有一个字符串(常规 JS 字符串),我需要将该字符串作为文本文件上传到服务器。我还将从文件系统中获得其他文件引用,我也需要将其上传。
如何在 React Native 中根据任意类型的数据创建 Blob?
最佳答案
你试过react-native中的rn-fetch-blob包吗?我使用这个包通过 firebase 上传图像如下,它可能对你有帮助。
import { firebase } from '../config';
import { Platform } from 'react-native';
import RNFetchBlob from 'react-native-fetch-blob';
const Blob = RNFetchBlob.polyfill.Blob;
const fs = RNFetchBlob.fs;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;
export const uploadImage = (uri, mime, uid) => {
return new Promise((resolve, reject) => {
const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;
let uploadBlob = null;
const imageRef = firebase
.storage()
.ref('profileImg')
.child(uid);
fs.readFile(uploadUri, 'base64')
.then(data => {
return Blob.build(data, { type: `${mime};BASE64` });
})
.then(blob => {
uploadBlob = blob;
return imageRef.put(uploadUri, { contentType: mime });
})
.then(() => {
uploadBlob.close();
return imageRef.getDownloadURL();
})
.then(url => {
resolve(url);
})
.catch(error => {
reject(error);
});
});
};
关于javascript - React Native 从任意数据创建 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57314070/