使用putString调用上载React-native Firebase存储

jan*_*tak 2 upload firebase react-native firebase-storage

我设立这个线程,以便澄清,火力存储是否putString方法工作,作出反应母语.

根据我搜索的内容,目前无法使用put方法将文件或Blob类型上传到Firebase存储.

React Native不支持文件和Blob类型,因此Firebase存储上载在此环境中不起作用.但文件下载确实有用.

消息来源:Firebase博客

因此这个电话

firebase.storage().ref()
.child(userID)
.put(new File(['this is a small amount of data'], 'sample-text.txt', { type: "text/plain" }), { type: "text/plain" })
.then(p => {console.log(p)})
.catch(p => {console.log(p)})
Run Code Online (Sandbox Code Playgroud)

不起作用,最终得到回应

代码:"存储/未知"消息:"Firebase存储:发生未知错误,请检查错误有效负载以获取服务器响应." name:"FirebaseError" serverResponse:" Multipart body不包含2或3个部分. "

不过,还有另一种方法可以使用Firebase存储putString方法将数据上传到Firebase存储.哪个适用于普通字符串.但即使我使用这种方法上传.我和以前一样得到了相同的服务器响应.

firebase.storage()
.ref()
.child(userID)
.putString('string')
.then(p => {console.log(p)})
.catch(p => {console.log(p)});
Run Code Online (Sandbox Code Playgroud)

从我从这个答案中学到的东西来说.该putString方式应该工作.

我究竟做错了什么?在React中,代码对我来说很好.每当我粘贴到React-native时.它停止工作.

MrB*_*ser 6

我刚刚在Ven评论之前尝试过react-native-fetch-blob,并且我能够使它工作,尝试在示例中使用索引文件中的这个片段:

1)课前声明:

import RNFetchBlob from 'react-native-fetch-blob';
const Blob = RNFetchBlob.polyfill.Blob;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;
Run Code Online (Sandbox Code Playgroud)

2)在存储方法内:

let filePath = 'YOUR/FILE/PATH';
let fileName = 'file_name.jpg';
let rnfbURI = RNFetchBlob.wrap(filePath);
// create Blob from file path
Blob
.build(rnfbURI, { type : 'image/png;'})
.then((blob) => {
  // upload image using Firebase SDK
  firebase.storage()
    .ref('images')
    .child(fileName)
    .put(blob, { contentType : 'image/jpg' })
    .then((snapshot) => {
      console.log('Uploaded', snapshot.totalBytes, 'bytes.');
      console.log(snapshot.metadata);
      var url = snapshot.metadata.downloadURLs[0];
      console.log('File available at', url);
    }).catch(function(error) {
      console.error('Upload failed:', error);
    });
Run Code Online (Sandbox Code Playgroud)