未处理的承诺拒绝:TypeError:网络请求失败 - 在 React Native / Expo 中将 Base64(视频/mp4)转换为 Blob

Posted

技术标签:

【中文标题】未处理的承诺拒绝:TypeError:网络请求失败 - 在 React Native / Expo 中将 Base64(视频/mp4)转换为 Blob【英文标题】:Unhandled promise rejection: TypeError: Network request failed - Converting Base64 (video/mp4) to Blob in React Native / Expo 【发布时间】:2021-09-24 10:04:07 【问题描述】:

我正在尝试从我的手机中获取一个文件以将其转换为 javascript File 对象,但要做到这一点,我首先需要它是一个 blob。到目前为止,这是我的代码:

import * as FS from 'expo-file-system';

let base64 = await FS.readAsStringAsync('file:///storage/emulated/0/DCIM/b914bf57-4899-45d1-a020-fc2b274b4640.mp4', encoding: FS.EncodingType.Base64);
let base64Response = await fetch(`data:video/mp4;base64,$base64`);
let blob = await base64Response.blob();
let file = new File([blob], "video.mp4", type: "video/mp4");

我怎样才能完成这项工作,或者有更简单的方法吗?我找不到任何适合我的工作示例。在第一行 Fetch() 引发异常。

【问题讨论】:

【参考方案1】:

使用 DocumentPicker 找到了解决方案,这是我的代码:

const  type, uri  = await DocumentPicker.getDocumentAsync(
            copyToCacheDirectory: false,
            type: 'video/mp4',
          );
      
if (type === 'cancel') 
  return;

              
const fetchResponse = await fetch(uri);    
const blob = await fetchResponse.blob();  
file = new File([blob], "video.mp4", type: "video/mp4");

【讨论】:

以上是关于未处理的承诺拒绝:TypeError:网络请求失败 - 在 React Native / Expo 中将 Base64(视频/mp4)转换为 Blob的主要内容,如果未能解决你的问题,请参考以下文章

react-native 错误:[未处理的承诺拒绝:错误:获取 Expo 令牌时遇到错误:TypeError:网络请求失败。]

未处理的承诺拒绝:TypeError:网络请求失败 - 在 React Native / Expo 中将 Base64(视频/mp4)转换为 Blob

Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”

可能的未处理承诺拒绝(id:0):TypeError:适配器不是函数。 (在“适配器(配置)”中,“适配器”未定义)?

可能未处理的承诺拒绝/错误:请求失败,状态码为 400

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map