我正在尝试使用 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 并手动添加了它。 那么如何打开下载的文件呢?