从ReactNative上传图像到firebase

时间:2017-08-07 12:24:20

标签: javascript firebase react-native firebase-storage

我是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.

非常感谢您提前寻求帮助。

2 个答案:

答案 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)
   }
 );