如何将Blob保存到React Native的临时本机存储中?

时间:2020-01-23 17:10:23

标签: react-native react-native-firebase

目标:在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()方法中使用的路径的中间步骤?

0 个答案:

没有答案