我是firebase的新手,在将图片上传到firebase.storage
时遇到了一些麻烦。
在我的应用程序中,我有一个图像,当我在console.log时,我得到了这个:
file:///Users/waltermonecke/Library/Developer/CoreSimulator/Devices/B38A76A…6E2-5EE0F4B38878/Documents/images/F6DFDD32-A741-446B-B035-F8407197421C.jpg
所以基本上是对.jpg
图像的引用。现在我想上传它,这是我的代码到目前为止:
let img = job.photo1.uri;
console.log(img) // See above
let storageRef = firebase.storage().ref(`/jobs/${currentUser.uid}`);
storageRef.put(img);
我认为这已经足够但我明显遗漏了一些东西,因为我收到此错误消息:
Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File.
非常感谢您提前寻求帮助。
答案 0 :(得分:1)
storageRef.put接受Blob而不是字符串。 React native没有内置方法将图像文件转换为Blob,因此您可以使用react-native-fetch-blob库来实现此目的。
Blob.build(img, {
type: "image/png;"
}).then(blob => {
firebase
.storage()
.ref(`/jobs/${currentUser.uid}`)
.put(blob, { contentType: "image/png" })
.then(snapshot => {
// Done upload
blob.close();
});
答案 1 :(得分:0)
取决于您用于firebase集成的库...假设react-native-firebase
,这应该有效:
firebase
.storage()
.ref(`/jobs/${currentUser.uid}`)
.putFile(img)
.on(
'state_changed',
(snapshot) => {
console.log(snapshot);
},
err => {
console.error(err)
},
(uploadedFile) => {
console.log(uploadedFile)
}
);