在react-native中使用Blob下载文件

Lou*_*ocq 8 javascript blob react-native expo

自React-native v0.54和Expo 以来SDK v26,现在支持Blob.

我正在尝试将URL上可用的文件下载到我的手机上(如果可能,请在我的DownloadsAndroid目录中)

我现在所能找到的只是现有的解决方案,使用react-native-fetch-blob它似乎不再需要了.

如果有人可以提供一个关于如何开始实现此功能的简短示例 Expo snack

Gil*_*ana 1

世博会

文件系统

您可以使用该FileSystem模块下载内容并将其保存在设备上的目录下。

安装

  • 托管工作流程

$ expo install expo-file-system

  • 裸工作流程

在简单的工作流程中,请按照此处的说明进行操作。

用法

  1. 导入模块
import * as FileSystem from 'expo-file-system';
Run Code Online (Sandbox Code Playgroud)
  1. 创建可恢复下载。

使用异步/等待

await FileSystem.downloadAsync(URI, FILE_URI, OPTIONS);
Run Code Online (Sandbox Code Playgroud)

使用承诺

FileSystem.downloadAsync(
  'http://techslides.com/demos/sample-videos/small.mp4',
  FileSystem.documentDirectory + 'small.mp4'
)
  .then(({ uri }) => {
    console.log('Finished downloading to ', uri);
  })
  .catch(error => {
    console.error(error);
  });
Run Code Online (Sandbox Code Playgroud)

笔记

请记住,为了保存/存储下载的内容,您需要传递有效的目录路径/uri。IE FileSystem.documentDirectory + 'small.mp4'。为了保证目录的路径存在,您可以使用FileSystem模块本身来创建目录。像这样: await FileSystem.makeDirectoryAsync(path, { intermediates: true });。options 对象采用middles属性,确保如果您尝试创建多级目录,它还会为您创建父文件夹(如果不存在)。