我想要做的就是使用 react-native-fetch-blob 将使用 react-native-camera 拍摄的照片上传到 firebase 存储,但无论我做什么都不会发生。
我已经浏览了所有我能找到的文档,但似乎没有任何效果。
如果有人有完成此任务的工作系统,请将其发布为答案。我可以获得 react-native-camera 返回的 jpg 的 uri(它显示在 ImageView 和所有内容中),但是当需要放置 blob 时,我的上传功能似乎停止工作。
我目前的功能:
uploadImage = (uri, imageName, mime = 'image/jpg') => {
return new Promise((resolve, reject) => {
const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri
let uploadBlob = null
const imageRef = firebase.storage().ref('selfies').child(imageName)
console.log("uploadUri",uploadUri)
fs.readFile(uploadUri, 'base64').then((data) => {
console.log("MADE DATA")
var blobEvent = new Blob(data, 'image/jpg;base64')
var blob = null
blobEvent.onCreated(genBlob => {
console.log("CREATED BLOB EVENT")
blob = genBlob
firebase.storage().ref('selfies').child(imageName).put(blob).then(function(snapshot) {
console.log('Uploaded a blob or file!');
firebase.database().ref("selfies/" + firebase.auth().currentUser.uid).set(0)
var updates = {};
updates["/users/" + firebase.auth().currentUser.uid + "/signup/"] = 1;
firebase.database().ref().update(updates);
});
}, (error) => {
console.log('Upload Error: ' + error)
alert(error)
}, () => {
console.log('Completed upload: ' + uploadTask.snapshot.downloadURL)
})
})
}).catch((error) => {
alert(error)
})
}
我希望尽可能高效,所以如果它更快并且占用更少的内存而不将其更改为 base64,那么我更喜欢那样。现在我只是不知道如何使这项工作。
这一直是我生活中压力的巨大来源,我希望有人能解决这个问题。