首页 > 解决方案 > 在 react-native 中使用 Blob 下载文件

问题描述

从 React-nativev0.54和 ExpoSDK v26开始,现在支持 Blob。

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

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

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

标签: javascriptreact-nativeblobexpo

解决方案


XMLHttpRequest

这对我有用。使用 XMLHttpRequest 获取文件并以 blob 形式获取响应。

function downloadFile(url) {
  return new Promise((resolve, reject) => {
      var xhr = new XMLHttpRequest();
      xhr.onerror = reject;
      xhr.onreadystatechange = () => {
          if (xhr.readyState === 4) {
              resolve(xhr.response);
          }
      };
      xhr.open('GET', url);
      xhr.responseType = 'blob'; // convert type
      xhr.send();
  })
}

您现在可以使用以下命令下载文件

downloadFile(YOUR_FILE_URL)
    .then((resolve, reject)=>{console.log((resolve)})

参考


推荐阅读