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

时间:2016-08-26 06:49:42

标签: firebase upload react-native firebase-storage

我设置此线程是为了澄清firebase存储 putString 方法还是在React中工作-native。

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

  

React Native不支持文件和Blob类型,因此Firebase存储上传将无法在此环境中运行。但文件下载确实有效。

消息来源:The Firebase Blog

因此这个电话

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)})

不起作用,最终得到回复

  

代码:"存储/未知"消息:" Firebase存储:未知错误   发生了,请检查服务器响应的错误有效负载。"名称 :   " FirebaseError" serverResponse :" 多部分正文不包含2或   3部分。"

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

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

来自我从this answer学到的知识。 putString 方式工作。

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

1 个答案:

答案 0 :(得分:6)

我之前刚刚尝试react-native-fetch-blob作为Ven评论过,我能够让它发挥作用,尝试使用示例中index file的这个代码段:

1)课前声明:

import RNFetchBlob from 'react-native-fetch-blob';
const Blob = RNFetchBlob.polyfill.Blob;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;

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