目标:在React-Native项目中,通过先将Blob保存到临时本机存储中,将Blob写入firebase / storage。我使用的是react-native-firebase
,而不是js Firebase SDK。因此我必须使用RN-Firebase的.putFile()
方法。它需要一个文件路径。我猜想它不像使用响应对象来自react-native-image-crop-picker的路径那样简单,否则找到here的答案就不会说您需要将blob保存到tmp存储,并且使用BLOB的文件路径,而不是图像。
我现有的上传方法的内容:
const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;
let uploadBlob = null;
// update storage ref to work with react-native-firebase
const imageRef = firebase.storage().ref(uid).child('profileImg');
fs
.readFile(uploadUri, 'base64')
.then((data) => {
return Blob.build(data, { type: `${mime};BASE64` });
})
.then((blob) => {
uploadBlob = blob;
// update to use react-native-firebase binding
// return imageRef.putFile({file-Path-of-blob}, {metadata})
// firebase js SDK version
// return imageRef.put(blob, { contentType: mime });
})
.then(() => {
uploadBlob.close();
return imageRef.getDownloadURL();
})
.then((url) => {
console.log('Returning Download URL: ' + url);
uploadImgSuccess(dispatch, 'Image upload successful...');
})
.catch((err) => {
uploadImgFail(dispatch, 'Image upload failed: ' + JSON.stringify(err));
});
}
您如何执行将Blob创建后保存到存储,并检索能够在.putFile()
方法中使用的路径的中间步骤?