javascript - React Native 从任意数据创建 blob

标签 javascript react-native blob

我有一个 React Native (0.59) 应用程序,它使用一个(Swagger 生成的)SDK,该 SDK 接受 Blob 对象进行文件上传。虽然有关于从远程资源创建 blob 的资源(例如使用 fetch),但我找不到任何关于动态创建 blob 的资源。例如我有一个字符串(常规 JS 字符串),我需要将该字符串作为文本文件上传到服务器。我还将从文件系统中获得其他文件引用,我也需要将其上传。

如何在 React Native 中根据任意类型的数据创建 Blob?

最佳答案

你试过react-native中的rn-fetch-blob包吗?我使用这个包通过 firebase 上传图像如下,它可能对你有帮助。

import { firebase } from '../config';
import { Platform } from 'react-native';
import RNFetchBlob from 'react-native-fetch-blob';

const Blob = RNFetchBlob.polyfill.Blob;
const fs = RNFetchBlob.fs;

window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;

export const uploadImage = (uri, mime, uid) => {
  return new Promise((resolve, reject) => {
    const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;

    let uploadBlob = null;

    const imageRef = firebase
      .storage()
      .ref('profileImg')
      .child(uid);
    fs.readFile(uploadUri, 'base64')
      .then(data => {
        return Blob.build(data, { type: `${mime};BASE64` });
      })
      .then(blob => {
        uploadBlob = blob;
        return imageRef.put(uploadUri, { contentType: mime });
      })
      .then(() => {
        uploadBlob.close();
        return imageRef.getDownloadURL();
      })
      .then(url => {
        resolve(url);
      })
      .catch(error => {
        reject(error);
      });
  });
};

关于javascript - React Native 从任意数据创建 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57314070/

相关文章:

javascript - 通过 POST 接收 JSON 的 API 接收到的类型与发送的类型不同

javascript - 如何使用链接并检查内容长度

javascript - 替换字符串 char 但保留大小写类型

multithreading - 如何在不卡住的情况下读取 blobfield?

javascript - 无法在移动 Chrome 中从 blob url 读取音频

javascript - 将 Javascript BLOB 编码更改为 ANSI 而不是 UTF-8

javascript - 在 React 中使用 map() 时无法通过 API 调用访问数组数据

node.js - 使用axios上传图片的问题

java - Android 依赖项 'com.google.android.gms:play-services-stats' 具有不同版本的编译 (16.0.1) 和运行时 (17.0.0) 类路径

android - Web View 中的 native 登录和应用程序的其余部分