使用 rnfetchBlob 下载 base64 文件

时间:2021-04-08 15:26:27

标签: android react-native

我正在尝试使用 rn-fetch-blob 下载在服务器中存储为 base64 的 .docx 文件 这是我的下载功能:

const downloadFileHandler = async() => {
    setDownloading(true)
    const { dirs } = RNFetchBlob.fs;
    const downloadFileName = "test.docx"
    var fileExt = downloadFileName.split('.').pop();
    //let downloadDest = RNFS.ExternalStorageDirectoryPath
    if (Platform.OS=='android'){
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
  );if (granted){
    try{
    RNFetchBlob
    .config({
      fileCache : true,
        addAndroidDownloads : {
            useDownloadManager : true,
            path: `${dirs.DownloadDir}/${downloadFileName}`,
            title: downloadFileName,
            description: 'Download complete',
            mediaScannable: true,
            notification : true,
            mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            description : 'File Downloading.',
        }
    })
    .fetch('GET',`MY_URL`)
    .then((resp) => {
      let base64Str = resp.data;
      const dirToSave = dirs.DownloadDir;
      let fLocation = dirToSave + downloadFileName;
      RNFetchBlob.fs.writeFile(fLocation, RNFetchBlob.base64.encode(base64Str), 'base64');
    }).catch(err=>console.log(err))
    .finally(()=>setDownloading(false))
  }
  catch(error){()=>setDownloading(false)}
}
}
  };

发生了什么是它触发下载管理器并下载文件(文档或 Excel),但是当我尝试用 office 打开它时,它给了我以下错误:

<块引用>

Word 在 myfile.docx 中发现不可读的内容

但是当我尝试打开另一个由 chrome 下载的文件时,它打开没有问题! 我尝试使用在线转换器将 base64 转换为文件并下载它,它没有问题,我也检查了 mimetype 并手动添加了它。 那么如何打开下载的文件呢?

0 个答案:

没有答案
相关问题