欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-09-08 14:16:04
本文内容: react-native-fs的简单使用 下载文件(图片、文件、视频、音频) 将文本写入本地 txt 读取txt文件内容 在已...

本文内容:

react-native-fs的简单使用

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

github链接:

另外还有一个下载的库 :

安装步骤

第一步:

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

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