Цель: в проекте React-Native запишите большой двоичный объект в базу данных / хранилище, предварительно сохранив большой двоичный объект во временном собственном хранилище. Я использую react-native-firebase
, а не js Firebase SDK. поэтому я должен использовать метод RN-Firebase .putFile()
. который принимает путь к файлу. Я предполагаю, что это не так просто, как использовать путь к объекту ответа из response-native-image-crop-picker, иначе ответ, найденный здесь , не сказал бы, что вам нужно сохранить большой двоичный объект в tmp. хранить и использовать путь к файлу большого двоичного объекта, а не изображение.
содержимое моего существующего метода загрузки:
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));
});
}
Как выполнить промежуточный этап сохранения большого двоичного объекта в хранилище один раз Он создан и извлекает путь, который можно использовать в методе .putFile()
?