美文网首页
小程序 文件创建、追加、删除、上传云服务

小程序 文件创建、追加、删除、上传云服务

作者: hao_developer | 来源:发表于2023-03-31 15:58 被阅读0次
image.png
const fs = wx.getSystemFileManager();
可以获取到全局唯一的文件系统管理器,所有文件系统的管理操作通过 FileSystemManager 来调用
1:创建文件前fs.writeFile,必须要先创建目录fs.mkdir和检查是否存在fs.access
2:在当前文件中追加数据fs.appendFile
3:删除当前目录中所有文件 读取目录中所有文件fs.readdir--->循环files.forEach--->删除fs.unlink
wx.env.USER_DATA_PATH
本地文件的文件路径均为以下格式:{{协议名}}://文件路径
其中,协议名在 iOS/Android 客户端为 "wxfile",在开发者工具上为 "http",开发者无需关注这个差异,也不应在代码中去硬编码完整文件路径。
注意:filePath一定要和你存储的路径一模一样才可以删除成功!不然会报没有删除权限errMsg:"unlink:fail fail permission denied, open "http://usr/data1800330233101.doc""(这个小程序的报错提示也是真的坑.)
http://usr/data1800330233101.doc
需要改成
http://usr/data/1800330233101.doc

wxml

<button bindtap="clickHandler" data-operation="{{1}}" type="default" style="margin-top: 10rpx;">创建目录</button>
<button bindtap="clickHandler" data-operation="{{2}}" type="default" style="margin-top: 10rpx;">写入文件</button>
<button bindtap="clickHandler" data-operation="{{3}}" type="default" style="margin-top: 10rpx;">文件是否存在</button>
<button bindtap="clickHandler" data-operation="{{4}}" type="default" style="margin-top: 10rpx;">保存文件</button>
<button bindtap="clickHandler" data-operation="{{5}}" type="default" style="margin-top: 10rpx;">打开文件</button>
<button bindtap="clickHandler" data-operation="{{6}}" type="default" style="margin-top: 10rpx;">继续写入</button>
<button bindtap="clickHandler" data-operation="{{7}}" type="default" style="margin-top: 10rpx;">删除文件</button>
<button bindtap="clickHandler" data-operation="{{8}}" type="default" style="margin-top: 10rpx;">上传文件</button>

js

let fs = null;

Page({
  data: {
    filePath: '', //文件地址
    tempDatas: [
      [
        10, 11, 12, 13, 14, 15, 16, 17, '123456789'
      ]
    ]
  },
  onLoad(options) {
    fs = wx.getFileSystemManager();
  },
  onShow() {},
  clickHandler(e) {
    const operation = e.currentTarget.dataset.operation;
    switch (operation) {
      case 1: //创建目录
        const _filePath = `${wx.env.USER_DATA_PATH}/data`;
        fs.mkdir({
          dirPath: _filePath,
          recursive: false,
          success: (res) => {
            console.log(res);
          },
          fail: (err) => {
            console.log(err);
          },
        });
        break;
      case 2: //写入文件
        const filePath_ = `${wx.env.USER_DATA_PATH}/data/` + Date.now() + '.doc';
        this.data.filePath = filePath_;
        fs.writeFile({
          filePath: filePath_,
          data: '1234567890',
          encoding: 'utf8',
          success: (res) => {
            console.log(res);
          },
          fail: (err) => {
            console.log(err);
          },
        });
        break;
      case 3: //文件是否存在
        fs.access({
          path: this.data.filePath,
          success(res) {
            console.log(res);
          },
          fail(err) {
            console.log(err);
          }
        })
        break;
      case 4: //保存文件
        fs.saveFile({
          tempFilePath: this.data.filePath,
          success: (result) => {
            console.log(result);
          },
          fail: (res) => {
            console.log(res);
          },
        })
        break;
      case 5: //打开文件
        wx.openDocument({
          filePath: this.data.filePath,
          fileType: 'doc',
          success: (res) => {
            console.log(res);
          },
          fail: (err) => {
            console.log(err);
          }
        })
        break;
      case 6: //继续写入
        fs.appendFile({
          filePath: this.data.filePath,
          data: '\n' + this.data.tempDatas + '',
          encoding: 'utf8',
          success: (res) => {
            console.log(res);
          },
          fail: (err) => {
            console.log(err);
          },
        });
        break;
      case 7: //删除 `${wx.env.USER_DATA_PATH}/data/`文件夹下所有文件
        console.log(this.data.filePath);
        fs.readdir({
          dirPath: wx.env.USER_DATA_PATH,
          success: (res) => {
            console.log('readdir', res);
            res.files.forEach((el) => {
              fs.unlink({
                filePath: `${wx.env.USER_DATA_PATH}/${el}`.replace(/data/g, "data/"),
                success: (res) => {
                  console.log('unlink',res);
                },
                fail: (err) => {
                  console.log('unlink', err);
                }
              })
            })
          },
          fail: (err) => {
            console.log('readdir',err);
          }
        })
        break;
      case 8: //上传文件(云服务接口)
        wx.showLoading({
          title: '请稍后',
        });
        const _that = this;
        const name = this.data.filePath.substr(this.data.filePath.lastIndexOf('/') + 1)
        wx.cloud.uploadFile({
          cloudPath: 'data/' + name, // 指定上传到的云路径
          filePath: _that.data.filePath,
        }).then(res => {
          console.log('上传成功-云存储', res);
          wx.hideLoading();
          wx.showToast({
            title: '上传成功',
          })
        }).catch(err => {
          console.log('上传失败', err);
          wx.hideLoading();
          wx.showToast({
            title: '上传失败',
          })
        });
        break;
    }
  }
})

相关文章

  • 微信小程序实现多张图片的一次性上传,删除,预览,点击按钮上传至云

    一:实现功能 实现从本地文件中一次选择上传多张图片 长按可删除图片 单击可预览图片 点击按钮上传至小程序云平台的云...

  • 小程序云开发 - 云存储

    云存储 小程序端 上传文件 在小程序端可调用 wx.cloud.uploadFile 方法进行上传: 下载文件 可...

  • FTP

    Menu 1.创建FTP服务器2.递归删除FTP服务器文件3.递归下载FTP服务器文件4.递归上传FTP服务器文件...

  • 文件存储微服务搭建

    创建文件管理微服务service_file,该工程主要用于实现文件上传以及文件删除等功能。 (1)修改pom.xm...

  • 【总结】2017.01.19

    2017.01.19 - 计划 小程序文件上传 小程序下拉刷新loading - 实际完成 小程序文件上传 小程序...

  • 小程序上传图片到七牛

    小程序上传图片到七牛云存储,服务端使用nodejs的thinkjs框架 服务端 小程序端 上传图片 效果如下: 本...

  • [Spring Guides] 上传文件

    本指南将引导您完成创建可以接收HTTP多部分文件上传的服务器应用程序的过程。 您将创建一个接受文件上传的Sprin...

  • 微信小程序上传下载本地图片以及微信文件

    微信小程序上传下载本地图片以及微信文件 最近在做一个云盘服务项目,想搭建到微信小程序上,然后讲一下微信小程序中上传...

  • Scala操作HDFS

    通过Scala对HDFS的一些操作,包括创建目录,删除目录,上传文件,文件读取,删除文件,Append文件等等; ...

  • Scala操作HDFS

    通过Scala对HDFS的一些操作,包括创建目录,删除目录,上传文件,文件读取,删除文件,Append文件等等; ...

网友评论

      本文标题:小程序 文件创建、追加、删除、上传云服务

      本文链接:https://www.haomeiwen.com/subject/zdyhddtx.html