Reactjs 如何下载到手机存储器?
我正在使用rn fetch blob获取api并将文件直接下载到我的存储中,已经创建了一个路径,我现在可以成功下载它,但当我尝试打开文件时,它会显示:“无法打开文件” 以下是我的下载功能:Reactjs 如何下载到手机存储器?,reactjs,react-native,react-native-android,react-native-flatlist,Reactjs,React Native,React Native Android,React Native Flatlist,我正在使用rn fetch blob获取api并将文件直接下载到我的存储中,已经创建了一个路径,我现在可以成功下载它,但当我尝试打开文件时,它会显示:“无法打开文件” 以下是我的下载功能: download =async (item) => { console.log(item) const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.WRITE_E
download =async (item) => {
console.log(item)
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
)
if (granted === PermissionsAndroid.RESULTS.GRANTED){
let dirs = RNFetchBlob.fs.dirs;
RNFetchBlob.config({
fileCache: true,
addAndroidDownloads : {
useDownloadManager: true,
notification : true,
path: dirs.DownloadDir + "/Baaz_"+Math.random().toString().slice(2, 6) ,
mime : 'application/mp4',
mediaScannable : true,
}
})
.fetch('GET', 'some url'+item.nameVid,{ 'Cache-Control': 'no-store' }).then((res) => {
alert('The file has saved!')
console.log('The file saved to ', res.path())
})
}
}
我在下载图标的平面列表中调用了此函数,如下所示:
<TouchableOpacity
onPress= {() => this.download(item)}
style={{
alignItems: 'center',
borderRadius: 60,
padding: 10,
}}>
<Icon name="download" size={30} color="white" />
</TouchableOpacity>
this.download(项目)}
风格={{
对齐项目:“居中”,
边界半径:60,
填充:10,
}}>
谁能告诉我为什么会这样?
我已经更新了依赖项并添加了权限。
如果您还需要什么,请告诉我。在iOS上,它与android有些不同,您必须使用库旁边的东西 安装后,您可以像这样使用RNFetchBlob:
const saveFile=async(uri,头)=>{
const file=await RNFetchBlob.config({
文件缓存:true
}).fetch('GET',uri,headers);
常量类型='some/file type';
const base64File=wait file.readFile('base64');
const localUrl=`data:${type};base64,${base64File}`;
等待分享({
本地URL
});
const filePath=file.path();
等待RNFetchBlob.fs.unlink(filePath);
}
已经根据android更新了我的代码,可以下载文件,但是当我试图打开它时,它说无法打开文件,你能告诉我,为什么会这样吗?这可能是文件格式本身无法用android读取,它是什么类型的文件格式@TRINACHAUDHURI我建议就此提出另一个问题,因为它与下载本身无关。你可以检查我的新问题