Javascript 从ReactNative将图像上载到firebase

Javascript 从ReactNative将图像上载到firebase,javascript,firebase,react-native,firebase-storage,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 所以基本上是对.jp

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

非常感谢您的帮助。

storageRef.put接受Blob而不是string。React native并没有将图像文件转换为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();
     });

取决于您用于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)
   }
 );

谢谢您的回答,但是我在Blob对象中没有看到.build方法。我使用的是firebase,我尝试了putFile方法。但是,它似乎不是有效的方法调用_firebase2.default.storage….ref….putFile不是使用此软件包的功能人员?这就是我最初提到的。。。。我知道这不是一个完整的答案,但我已经轻松地使用了它。