2017-08-07 107 views
0

我是新來的firebase和上傳圖片firebase.storage有點麻煩。將圖片上傳到firebase從ReactNative

在我的應用我有一個形象,當我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. 

謝謝非常提前任何幫助。

回答

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(); 
    }); 
+0

謝謝您的回答,但我沒有看到一個'.build'方法在Blob對象中。 –

0

取決於你正在使用您的火力集成什麼庫......假設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) 
    } 
); 
+0

我正在使用firebase,我嘗試了putFile方法。但是,它似乎不是一個有效的方法調用。 '_firebase2.default.storage(...)。ref(...)。putFile不是一個函數' –

+0

您是否使用此軟件包? https://github.com/invertase/react-native-firebase這就是我最初引用的那個....我知道這不是一個完整的答案,但我已經很輕鬆地使用了它。 – gtfargo