uniapp文件预览以及修改预览标题

常用预览

uniapp里面我们使用downloadFile和openDocument这两个api可以很简单实现对文档类型的文件预览。

js 复制代码
const previewFile = (item: any) => {
  uni.downloadFile({
    url: 'https://文件地址.pdf',
    success: (res: any) => {
      uni.openDocument(
        filePath: res.tempFilePath,
        fileType: 'pdf',
        fail: (err) => {
          console.log(err)
          uni.showToast({
            title: '文件预览失败!',
            icon: 'error',
          })
        },
      })
    },
    fail: (err) => {
      console.log(err)
      uni.showToast({
        title: '文件预览失败!',
        icon: 'error',
      })
    },
  })
}

我们来看看效果:

看起来是没什么问题,只是我们会发现预览的时候文件标题竟然是一串奇怪的字符。其实这是该文件的临时文件名。因为使用downloadFile这个api会将文件临时存到本地,并且会返回该文件的临时地址,预览时候显示的标题就是文件的临时名称。很多时候我们需要自己定义文件标题,而不是临时文件名。

修改预览标题

  1. 我们可以直接将文件进行长期保存并直接重命名文件名,这种方式我们此处不过多叙述了。在我看来为了预览文件而保存一个文件是不合理的。

  2. 我们还可以直接使用downloadFile的filePath参数来定义文件名。

    js 复制代码
    const previewFile = (item: any) => {
      uni.downloadFile({
        url: item.url,
        // uni.env.USER_DATA_PATH表示的是临时路径
        filePath: `${uni.env.USER_DATA_PATH}/${我是自定义标题}.pdf`,
        success: (res: any) => {
          uni.openDocument({
            filePath: res.filePath,
            fileType: 'pdf',
            fail: (err) => {
              console.log(err)
              uni.showToast({
                title: '文件预览失败!',
                icon: 'error',
              })
            },
          })
        },
        fail: (err) => {
          console.log(err)
          uni.showToast({
            title: '文件预览失败!',
            icon: 'error',
          })
        },
      })
    }
相关推荐
Java后端的Ai之路1 分钟前
Python 进阶探索30 - Python中的装饰器
开发语言·人工智能·python·文件处理·装饰器模式
沫璃染墨1 分钟前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
黑妹天下第一乖10 分钟前
第 05 讲:阿加犀 AidCV 图像处理加速与 OpenCV 一致开发实战
开发语言·图像处理·人工智能·嵌入式硬件·数码相机·opencv·计算机视觉
asong10 分钟前
从写代码到部署上线,Cloudflare 给 AI 配了一把新钥匙
前端·javascript·后端
言乐611 分钟前
Python基于关键词分拣快递(适用于电商与货运代理等)
开发语言·python·django·virtualenv·pygame
一条破秋裤17 分钟前
01_字符设备基本概念_从分类到LED控制链路
开发语言·php
朝朝辞暮i23 分钟前
C++ 第 40 章:ROS2 Publisher + Timer + Subscriber + Callback + Executor 完整闭环
开发语言·c++·算法·ros2
专注仿真34 分钟前
决策树的算法
开发语言·高性能算法
Evand J35 分钟前
【电机滤波例程2】负载转矩增广扩展卡尔曼滤波(EKF)原理与MATLAB例程:五维PMSM状态与负载阶跃估计。订阅专栏后可查看完整代码
开发语言·matlab·电机·ekf·卡尔曼滤波
lerhxx39 分钟前
从 Markdown 到生成式 UI:AI 应用中的流式渲染实践
前端·javascript