【问题标题】:React-native Firebase storage upload using putString call使用 putString 调用的 React-native Firebase 存储上传
【发布时间】:2017-01-02 18:07:18
【问题描述】:

我设置这个线程是为了澄清,firebase 存储 putString 方法 是否 在 React-native 中工作.

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

React Native 不支持 File 和 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 : "Multipart body 不包含 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 时。它停止工作。

【问题讨论】:

标签: firebase upload react-native firebase-storage


【解决方案1】:

正如 Ven 之前评论的那样,我刚刚尝试了 react-native-fetch-blob,并且我能够让它工作,尝试在示例中使用来自 index file 的这个 sn-p:

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

【讨论】:

  • 嗨,我正在使用图像选择器从手机中选择图像。图像选择器提供响应:{height: 33, origURL: "assets-library://asset/asset.JPG?id= 9F983DBA-EC35-42B8-8773-B597CF782EDD&ext=JPG",经度:-17.54892833333333,文件名:"IMG_0003.JPG",uri:"file:///Users/mac/Library/Developer/CoreSimulator/…temfiles/ADC7B1EA-93A0 -4A25-B7CA-342BE3EF58BE.jpg", ...} ,但是 RNFetchBlob.wrap() 只上传 origURL 而不是 uri,实际上我想使用 data 或 uri 上传图像,因为我需要在上传之前减小图像大小。请帮帮我
猜你喜欢
  • 2019-03-23
  • 2017-01-10
  • 2021-11-30
  • 2016-12-28
  • 2020-03-06
  • 2020-03-23
  • 1970-01-01
  • 2018-12-25
  • 2022-08-02
相关资源
最近更新 更多