JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了详解react-native-fs插件的使用以及遇到的坑大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

安装命令:

React Native版本是<0.40安装,使用此标签: npm install react-native-fs@2.0.1-rc.2 --save

安装后执行:

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

 

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

EID,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调用此插件,需要添加接口验证信息(如果接口是需要验证的情况下),这个问题怎么解决呢

调用react-native-fs插件时,如果数据的接口是需要验证信息的,在Android上运行报错,而在iOS上运行没问题。原因是因为接口是有验证信息的,而调用这个插件时没有传入,在iOS上会自动加上验证信息,而 android需要手动设置。

详解react-native-fs插件的使用以及遇到的坑

此错误的解决方法:

1.在调用登录接口时,保存下cookie(cookie在response里),在调用react-native-fs时放在headers里传入,代码如下:

password,callBACk){
fetch(commonSvc.baseURL + '/account/app-login',{

  method: 'POST',headers: {

    'Accept': 'application/json','Content-Type': 'application/json'

  },body: JSON.Stringify({

    UserName: userName,password: password

  })

}).then(

  (responsE) => {

    if (response.ok) {

      return response;

    } else {

      var message;

      switch (response.status) {

        case 710:

          message = LanguageChooseSvc.Strings['api_common_' + 710];

          break;

        case 711:

          message = LanguageChooseSvc.Strings['api_common_' + 711];

          break;

        case 400:

          message = LanguageChooseSvc.Strings['api_common_' + 400];

          break;

        default:

          message = commonSvc.httpErrormessage;

          break;

      }

      throw {message: messagE};

    }

  }

).then(

  (responseJson) => {

    callBACk(null,responseJson);

  }

).catch(

  (error) => {

    callBACk(error.messagE);

  }

);

},

2.在调用react-native-fs时放在headers里传入,代码如下:

EID,

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持菜鸟教程。

大佬总结

以上是大佬教程为你收集整理的详解react-native-fs插件的使用以及遇到的坑全部内容,希望文章能够帮你解决详解react-native-fs插件的使用以及遇到的坑所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。