首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下载文件(使用expo) -为什么这么难?

下载文件(使用expo) -为什么这么难?
EN

Stack Overflow用户
提问于 2018-07-16 08:20:42
回答 5查看 14.8K关注 0票数 11

我已经尝试了多种方法将文件下载到react原生的本地存储中,但都不起作用。下面是我调用FileSystem.downloadAsync的App.js代码。

代码语言:javascript
运行
复制
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的反应非常陌生,但是为什么简单地下载一个文件似乎如此困难,有什么帮助吗?

EN

回答 5

Stack Overflow用户

发布于 2019-09-18 14:57:47

我还没有在ios上测试过,但它在Android上工作得很好,将文件保存到下载目录中:

代码语言:javascript
运行
复制
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)
    }
}
票数 18
EN

Stack Overflow用户

发布于 2018-08-14 07:36:32

更换您的

代码语言:javascript
运行
复制
import FileSystem from 'react-native-filesystem';

代码语言:javascript
运行
复制
import { FileSystem } from 'expo';
票数 0
EN

Stack Overflow用户

发布于 2019-04-11 20:00:38

因此,从外观上看,上面的功能似乎还没有像许多人要求的那样,作为世博会的一个功能开发出来-

https://expo.canny.io/feature-requests/p/ability-to-save-files-on-internal-storage

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51353224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档