react-native-fs实现文件下载、文本存储的示例代码


Posted in Javascript onSeptember 22, 2017

本文内容:

react-native-fs的简单使用

  1. 下载文件(图片、文件、视频、音频)
  2. 将文本写入本地 txt
  3. 读取txt文件内容
  4. 在已有的txt上添加新的文本
  5. 删除文件
  6. 上传文件 only iOS

github链接: https://github.com/itinance/react-native-fs

另外还有一个下载的库 :https://github.com/wkh237/react-native-fetch-blob

安装步骤

第一步:

npm install react-native-fs --save

第二步:

react-native link react-native-fs

OK 即可开始使用(不放心的可以按照github上的对比一下)

简单使用

import RNFS from 'react-native-fs';

下载文件

/*下载文件*/
  downloadFile() {
    // On Android, use "RNFS.DocumentDirectoryPath" (MainBundlePath is not defined)

    // 图片
    // const downloadDest = `${RNFS.MainBundlePath}/${((Math.random() * 1000) | 0)}.jpg`;
    // const formUrl = 'http://img.kaiyanapp.com/c7b46c492261a7c19fa880802afe93b3.png?imageMogr2/quality/60/format/jpg';

    // 文件
    // const downloadDest = `${RNFS.MainBundlePath}/${((Math.random() * 1000) | 0)}.zip`;
    // const formUrl = 'http://files.cnblogs.com/zhuqil/UIWebViewDemo.zip';

    // 视频
    // const downloadDest = `${RNFS.MainBundlePath}/${((Math.random() * 1000) | 0)}.mp4`;
    // http://gslb.miaopai.com/stream/SnY~bbkqbi2uLEBMXHxGqnNKqyiG9ub8.mp4?vend=miaopai&
    // https://gslb.miaopai.com/stream/BNaEYOL-tEwSrAiYBnPDR03dDlFavoWD.mp4?vend=miaopai&
    // const formUrl = 'https://gslb.miaopai.com/stream/9Q5ADAp2v5NHtQIeQT7t461VkNPxvC2T.mp4?vend=miaopai&';

    // 音频
    const downloadDest = `${RNFS.MainBundlePath}/${((Math.random() * 1000) | 0)}.mp3`;
    // http://wvoice.spriteapp.cn/voice/2015/0902/55e6fc6e4f7b9.mp3
    const formUrl = 'http://wvoice.spriteapp.cn/voice/2015/0818/55d2248309b09.mp3';

    const options = {
      fromUrl: formUrl,
      toFile: downloadDest,
      background: true,
      begin: (res) => {
        console.log('begin', res);
        console.log('contentLength:', res.contentLength / 1024 / 1024, 'M');
      },
      progress: (res) => {

        let pro = res.bytesWritten / res.contentLength;

        this.setState({
          progressNum: pro,
        });
      }
    };
    try {
      const ret = RNFS.downloadFile(options);
      ret.promise.then(res => {
        console.log('success', res);

        console.log('file://' + downloadDest)

      }).catch(err => {
        console.log('err', err);
      });
    }
    catch (e) {
      console.log(error);
    }

  }

将文本写入本地 txt

/*将文本写入本地 txt*/
  writeFile() {
    // create a path you want to write to
    const path = RNFS.MainBundlePath + '/test.txt';

    // write the file
    RNFS.writeFile(path, '这是一段文本,YES', 'utf8')
      .then((success) => {
        console.log('path', path);
      })
      .catch((err) => {
        console.log(err.message);
      });
  }

读取txt文件内容

/*读取txt文件内容*/
  readFile() {
    // create a path you want to delete
    const path = RNFS.MainBundlePath + '/test.txt';

    return RNFS.readFile(path)
      .then((result) => {
        console.log(result);

        this.setState({
          readTxtResult: result,
        })
      })
      .catch((err) => {
        console.log(err.message);

      });
  }

在已有的txt上添加新的文本

/*在已有的txt上添加新的文本*/
  appendFile() {
    const path = RNFS.MainBundlePath + '/test.txt';

    return RNFS.appendFile(path, '新添加的文本', 'utf8')
      .then((success) => {
        console.log('success');
      })
      .catch((err) => {
        console.log(err.message);

      });
  }

删除文件

/*删除文件*/
  deleteFile() {
    // create a path you want to delete
    const path = RNFS.MainBundlePath + '/test.txt';

    return RNFS.unlink(path)
      .then(() => {
        console.log('FILE DELETED');
      })
      // `unlink` will throw an error, if the item to unlink does not exist
      .catch((err) => {
        console.log(err.message);
      });
  }

上传文件 only iOS

/*上传文件 only iOS*/
  uploadFile() {
    const uploadSrc = `${RNFS.MainBundlePath}/test.txt`;

    const uploadUrl = 'http://buz.co/rnfs/upload-tester.php';

    const options = {
      toUrl: uploadUrl,
      files: [{name: 'myfile', filename: 'test.txt', filepath: uploadSrc, filetype: 'text/plain'}],
      background: true,
      method: 'POST', // PUT
      begin: (res) => {
        console.log('begin', res);
      },
      progress: (res) => {
        console.log('progress', res);
      }
    };

    const ret = RNFS.uploadFiles(options);

    return ret.promise.then(res => {
      const response = JSON.parse(res.body);
      console.log(response);

    })
      .catch(err => {
        console.log('err', err);
      });
  }

demo:https://github.com/chjwrr/RN-react-native-fs

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
javascript学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 Javascript
three.js实现3D影院的原理的代码分析
Dec 18 Javascript
electron实现qq快捷登录的方法示例
Oct 22 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 17 Javascript
js实现贪吃蛇游戏(简易版)
Sep 29 Javascript
微信小程序调用后台service教程详解
Nov 06 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 #jQuery
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 #jQuery
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
Sep 22 #Javascript
js表单序列化判断空值的实例
Sep 22 #Javascript
VUE中的无限循环代码解析
Sep 22 #Javascript
详解vue中引入stylus及报错解决方法
Sep 22 #Javascript
EL表达式截取字符串的函数说明
Sep 22 #Javascript
You might like
Phpbean路由转发的php代码
2008/01/10 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
php 安全过滤函数代码
2011/05/07 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
Python列表对象实现原理详解
2019/07/01 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
PHP经典面试题
2016/09/03 面试题
护士见习期自我鉴定
2014/02/08 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
行政助理岗位职责
2015/02/10 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
老人与海读书笔记
2015/06/26 职场文书
配置nginx负载均衡
2022/05/06 Servers