相关文章推荐
聪明伶俐的鞭炮  ·  Android中 ...·  2 天前    · 
霸气的蛋挞  ·  错误MSB4018 ...·  2 天前    · 
潇洒的电梯  ·  (原創) ...·  2 天前    · 
踏实的冲锋衣  ·  python - ...·  1 年前    · 

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

  1. 文件下载保存到本地
  2. 读取、编辑文件
  3. 上传文件
  4. 删除文件

API参考:

pathAPI

```JavaScript
MainBundlePath (String) 主包目录的绝对路径(在 Android 上不可用)
CachesDirectoryPath (String) 缓存目录的绝对路径
ExternalCachesDirectoryPath (String) 外部缓存目录的绝对路径(仅限安卓)
DocumentDirectoryPath (String) 文档目录的绝对路径
DownloadDirectoryPath (String) 下载目录的绝对路径(仅在 android 上)
TemporaryDirectoryPath (String) 临时目录的绝对路径(在 Android 上回退到 Caching-Directory)
LibraryDirectoryPath (String) NSLibraryDirectory 的绝对路径(仅限 iOS)
ExternalDirectoryPath (String) 外部文件的绝对路径,共享目录(仅限安卓)
ExternalStorageDirectoryPath (String) 外部存储的绝对路径,共享目录(仅限安卓)

downloadAPI

```JavaScript
fromUrl:字符串; // 下载文件的 URL
toFile: 字符串; // 将文件保存到的本地文件系统路径
headers?:标题; // 要传递给服务器的标头对象
background?:布尔值; // 应用终止后继续在后台下载(仅限iOS)
discretionary?:布尔值; // 允许操作系统控制下载的时间和速度以提高感知性能(仅限 iOS)
cacheable?:布尔值; // 下载是否可以存储在共享的NSURLCache中(仅限iOS,默认为true)
progressInterval?:数字;
progressDivider?:数字;
begin?:(res:DownloadBeginCallbackResult)=> void;
progress?:(res:DownloadProgressCallbackResult)=> void;
resumable?:()=> void; // 目前只支持 iOS
connectionTimeout?: number // 目前仅在 Android 上支持
readTimeout?: number // Android 和 iOS 支持
backgroundTimeout?: number // 下载整个资源的最长时间(以毫秒为单位)(仅限 iOS,用于后台下载超时)

util.ts

import RNFS from 'react-native-fs';
// 传入一个url和名字,下载到指定目录
export const downloadTxt = (path:string,name:string)=>{
    const installUrl = path;
    const filePath = RNFS.ExternalCachesDirectoryPath + `/${name}.txt`
    const download = RNFS.downloadFile({
        fromUrl: installUrl,
        toFile: filePath,
    return download.promise
// 创建一个txt
export const createTxt = (name:string,content:string)=>{
    const filePath = RNFS.ExternalCachesDirectoryPath + `/${name}.txt`
    return RNFS.writeFile(path, content, 'utf8')
// 读取一个txt的内容
export const createTxt = (name:string)=>{
    const filePath = RNFS.ExternalCachesDirectoryPath + `/${name}.txt`
    return RNFS.readFile(path)
// 编辑一个txt的内容
export const appendTxt = (name:string,content:string)=>{
    const filePath = RNFS.ExternalCachesDirectoryPath + `/${name}.txt`
    return RNFS. appendFile(path, content, 'utf8')
// 删除这个文件所在的文件夹(Linux rm -rf)
export const deleteTxt = ()=>{
    if (RNFS.exists(RNFS.ExternalCachesDirectoryPath)) {
        RNFS.unlink(RNFS.ExternalCachesDirectoryPath)
        // RNFS.unlink(RNFS.ExternalCachesDirectoryPath+`/${name}.txt`)
        // 也可指定文件删除

index.tsx

import React, { useState, useEffect } from 'react';
import RNFS from 'react-native-fs';
import { Button, Toast } from 'react-native'
import { downloadTxt, appendTxt, deleteTxt } from './util.ts';
const fileName = 'test';
const demo = () => {
    const [ isdownload, setIsdownload ] = useState<boolean>(false);
    useEffect(()=>{
        return ()=>{
            deleteTxt()
            // 界面销毁删除文件夹也可以修改函数实现不删除文件夹
    const handleDownloadTxt = () => {
        const installUrl = 'http://localhost:8080/test.txt'; // 网络文件
        // 这里使用localhost是通过node起了一个服务做静态代理等同于读取到一个网络文件
        downloadTxt(installUrl,fileName).then(result=>{
            if (result.statusCode === 200) {
                console.log('file://' + RNFS.ExternalCachesDirectoryPath + fileName + '.txt')
                setIsdownload(true)
    const handleAppendTxt = () =>{
        if(!isdownload) return Toast.fail('未下载')
        appendTxt(fileName,'编辑了这个文件').then(result=>{
             console.log('success');
    const handleuploadTxt = () => {
        const filePath = 'file://' + RNFS.ExternalCachesDirectoryPath + 
fileName +'.txt';
        // 已经获取到文件路径了,通过指定的方法把这个文件上传到相应的服务器就行了
    return (
            <Button onPress={handleDownloadTxt}>下载txt</Button>
            <Button onPress={handleAppendTxt}>编辑下载好的txt</Button>
            <Button onPress={handleuploadTxt}>上传txt</Button>
export default demo
插件:react-native-fsGitHub连接:https://github.com/itinance/react-native-fs#readme实现:文件下载保存到本地 读取、编辑文件 上传文件 删除文件API参考:pathAPI```JavaScriptMainBundlePath (String) 主包目录的绝对路径(在 Android 上不可用)CachesDirectoryPath (String) 缓存目录的绝对路径ExternalCachesDire
前言最近项目有新的需求,做一个类似朋友圈的功能。其中发布动态时就涉及到了图片的上传实现## 1.所用的API ## 采用HTML5提供的formData和网络框架axios实现 ## 2.具体代码 ## // 创建一个formData(虚拟表单) const formData = new FormData(); // 需要上传的文件 const file = { uri: fileUri, t
export const exportImg = function (imgsrc,name) { /* url图片地址,name图片名称 */ // 不跨域 // let alink = document.createElement('a'); // alink.href = url; // alink.download = name || '图片下载'; //...
选了文件就要上传,这篇就记录一下文件上传 这是antd的一个UI库,不知道的同学自行去学习,选择图片和拍照有时间在补上,他们的上传方法是同一个,还包含了一点点RN和webview的交互以及组件封装调用 https://rn.mobile.an...
react-native-background-upload 唯一具有Android和iOS背景支持的React Native http发布文件上传器。 如果您要上传视频之类的大文件,请使用此功能,以便您的用户可以在长时间上传过程中为您的应用程序添加背景。 注意:将主要版本4与RN 47.0及更高版本一起使用。 如果RN小于47,请使用3.0。 查看所有可用版本: npm show react-native-background-upload versions 1.安装软件包 npm install --save react-native-background-upload 这个库依赖于React Native的HeadlessJS ,目前只支持Android。 在本机端,它使用Firebase JobDispatcher或AlarmManager 。 Firebase JobDispatcher(默认值):无法准确计划任务...
React-Native 局域网内文件传输小结 我使用的技术栈是:react-native(0.56.0)+ react-navigation + react-redux + ant-design + axios 我在做的ReactNative项目需要实现同一WIFI下跨平台互传文件功能,涉及原生模块的功能实现这两个功能使用的库有 @react-native-community/netin...
React Native 文档查看组件:react-native-doc-viewer,可以在手机上直接打开文档,支持远程和本地文档。支持的文档格式:xls,ppt,doc,xlsx,pptx,docx,png,jpg,pdf,mp4。支持iOS和Android。 npm install reac var file = { uri: response.uri, type: 'multipart/form-data', name: 'image.jpg' } let formdata = new FormData(); formdata.append(...
首先说下这个问题很坑,append的Js的object类型无效,我们后台用的是java 上错不成功的代码let url = 'http://192.168.1.120:8090/app/release'; let params = {parentId: "0", text: this.state.textContent, postType: 0, profitType: 0}
github链接: https://github.com/itinance/react-native-fs 另外还有一个下载的库 :https://github.com/wkh237/react-native-fetch-blob npm install react-native-fs --save react-native li import { View, Image, StyleSheet } from 'react-native'; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', image: { alignSelf: 'center', const CenteredImage = ({ source }) => ( <View style={styles.container}> <Image source={source} style={styles.image} /> </View> export default CenteredImage; 在这个示例中,父容器使用flexbox布局,使得它的子元素在水平和垂直方向都居中。然后,将图片的alignSelf属性设置为'center',使得图片本身也居中。