我已经尝试了多种方法将文件下载到react原生的本地存储中,但都不起作用。下面是我调用FileSystem.downloadAsync的App.js代码。
import React from 'react';
import { AppRegistry, StyleSheet, Text, View, TouchableHighlight, Image, Linking, PixelRatio, ListView } from 'react-native';
import { createStackNavigator } from 'react-navigation'
import MainScreen from './Components/MainScreen'
import FileSystem from 'react-native-filesystem';
export default class App extends React.Component {
render() {
return (
FileSystem.downloadAsync(
'http://techslides.com/demos/sample-videos/small.mp4',
FileSystem.documentDirectory + 'small.mp4'
)
.then(({ uri }) => {
console.log('Finished downloading to ', uri);
})
.catch(error => {
console.error(error);
}),
);
}
}
const AppStackNavigator = createStackNavigator({
Main:{
screen: MainScreen
}
})
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
AppRegistry.registerComponent('Recap', () => App);
我得到了这个错误:
我对原生和javascript的反应非常陌生,但是为什么简单地下载一个文件似乎如此困难,有什么帮助吗?
发布于 2019-09-18 14:57:47
我还没有在ios上测试过,但它在Android上工作得很好,将文件保存到下载目录中:
import * as MediaLibrary from 'expo-media-library';
import * as FileSystem from 'expo-file-system';
import * as Permissions from 'expo-permissions';
downloadFile(){
const uri = "http://techslides.com/demos/sample-videos/small.mp4"
let fileUri = FileSystem.documentDirectory + "small.mp4";
FileSystem.downloadAsync(uri, fileUri)
.then(({ uri }) => {
this.saveFile(uri);
})
.catch(error => {
console.error(error);
})
}
saveFile = async (fileUri: string) => {
const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
if (status === "granted") {
const asset = await MediaLibrary.createAssetAsync(fileUri)
await MediaLibrary.createAlbumAsync("Download", asset, false)
}
}
发布于 2018-08-14 07:36:32
更换您的
import FileSystem from 'react-native-filesystem';
由
import { FileSystem } from 'expo';
发布于 2019-04-11 20:00:38
因此,从外观上看,上面的功能似乎还没有像许多人要求的那样,作为世博会的一个功能开发出来-
https://expo.canny.io/feature-requests/p/ability-to-save-files-on-internal-storage
https://stackoverflow.com/questions/51353224
复制相似问题