uniapp飞书小程序下载文件并重命名

uniapp 开发小程序,需要下载,并且对下载文件进行重命名

飞书小程序下载文件并对文件重命名的思路,先下载文件,得到缓存文件的位置,然后打开文件。但是这里面并没有对文件进行命名,文件名称实际上上是缓存的文件名称。在我们的业务场景中,需要把文件重新命名为指定的名称。这块的大概思路就是,将文件从缓存位置重新保存到指定位置,在保存过程中对文件进行命名,如果出现重名文件系统提示,需要重新给出名字。
下载列表
点击下载编辑按钮,可以对文件进行命名,然后点击下载可以直接下载该文件。
这里最核心得到问题时,如何知道手机系统中,保存文件的位置。

uni.saveFile({
   tempFilePath: res.tempFilePath,
   filePath: `ttfile://user/${newName}`,
   success: (res) => {
     // 重命名成功,res.savedFilePath是重命名后的路径
     const renamedFilePath = res.savedFilePath;
     // 打开文件
     uni.openDocument({
       filePath: renamedFilePath,
       showMenu: true,
       success: () => {
         console.log("打开文档成功");
       },
       fail: () => {
         console.log("文件打开失败");
       },
     });
     // 删除原来的文件
     uni.removeSavedFile({
       filePath: res.tempFilePath,
       complete: () => {
         // 删除操作完成
       },
     });
   },
   fail: (err) => {
     if (err.errCode === 1400004) {
       // 文件已存在
       uni.showModal({
         title: "",
         content: "本地存在相同的文件名称,请修改文件名称",
         showCancel: false,
       });
     } else {
       uni.showToast({ title: "下载文件失败", icon: "error" });
     }
   },
 });

重点在这个位置:
ttfile://user/
这个字符串就是飞书开发中,文件系统的一个默认配置,即飞书系统中保存文件的位置。我们重命名的时候只需要将新文件保存到这个位置即可。

删除缓存文件

另存文件的时候,保存完成之后我们需要删除之前缓存的文件。

uni.removeSavedFile({
  filePath: res.tempFilePath,
  complete: () => {
    // 删除操作完成
  },
});

这个res.tempFilePath 就是上一步下载文件时后临时文件的值,将该文件删除即可。

判重处理

因为我们重命名另存时,本地可能在ttfile://user/下已经存在了同名文件,saveFile接口会抛出异常,我们对抛出异常的code进行判断,对重名文件进行判断提示需要重新改一个名字。

if (err.errCode === 1400004) {
  // 文件已存在
  uni.showModal({
    title: "",
    content: "本地存在相同的文件名称,请修改文件名称",
    showCancel: false,
  });
} else {
  uni.showToast({ title: "下载文件失败", icon: "error" });
}

这样就可以了,重点就是这个ttfile://user/, 很重要。在微信开发中也有类似的变量wx.env.USER_DATA_PATH。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaolongyu3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值