zoukankan      html  css  js  c++  java
  • react-native-fs插件的使用以及遇到的坑

    react-native-fs插件是文件对上传和下载时使用的,iOS和android都可使用,File upload (iOS only)。

    安装命令:

    npm install react-native-fs --save
    
    //注意:如果react native版本是<0.40安装,使用此标签:
    
    npm install react-native-fs@2.0.1-rc.2 --save
    

      

    安装后执行:

    react-native link react-native-fs
    

      

    在android/app/src/main/AndroidManifest.xml,里添加android读写文件的权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

     

    进行完上述安装操作后,可以使用这个插件的各种方法,每个方法的具体使用例子,请看链接:https://github.com/itinance/react-native-fs。在项目里我需要下载图片文件,并获得下载到本地后的图片路径,然后显示图片。所以使用到downloadFile方法。封装了一个可调用的服务,代码如下:

    downloadFile(imageId, cookie, callback) {
            const downloadDest = `${RNFS.DocumentDirectoryPath}/${((Math.random() * 1000) | 0)}.jpg`;
            var formUrl = CommonSvc.baseURL + '/api/image/0/' + imageId;
            //var formUrl = 'http://lorempixel.com/400/200/';
            const options = {
                fromUrl: formUrl,
                toFile: downloadDest,
                background: true,
                headers: {
                    'Cookie': cookie //需要添加验证到接口要设置cookie
                },
                begin: (res) => {
                    //console.log(res);
                },
                progress: (res) => {
                    //console.log(res);
                }
            };
            try {
                const ret = RNFS.downloadFile(options);
                ret.promise.then(res => {
                    //callback(null, Platform.OS === 'android' ? downloadDest : 'file://' + downloadDest)
                    callback(null, 'file://' + downloadDest)
    
                }).catch(err => {
                    callback(err)
                });
            }
            catch (e) {
                callback("error")
            }
    
        },
    

      

    在实现这个功能到时候,android下载到本地的图片显示不出来,这个查阅了相关资料后,原因是android调用此插件,需要添加接口验证信息(如果接口是需要验证的情况下),这个问题我在另外一篇文章有讲到,详情可看链接:http://www.cnblogs.com/xiaojun-zxj/p/7048056.html

    接下来项目写到上传文件的功能时,继续补充上传功能...

  • 相关阅读:
    Maven setting配置镜像仓库
    MyBatis配置Mapping,JavaType和JDBCType的对应关系,#与$区别
    Git常用命令
    Js JSON.stringify()与JSON.parse()与eval()详解及使用案例
    例:判断是不是自有属性hasOwnProperty方法
    JS中原型链中的prototype与_proto_的个人理解与详细总结
    原型理解:prototype
    JS中attribute和property的区别
    面试题术语
    函数语法
  • 原文地址:https://www.cnblogs.com/xiaojun-zxj/p/7055530.html
Copyright © 2011-2022 走看看