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

常用预览

uniapp里面我们使用downloadFileopenDocument这两个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. 我们还可以直接使用downloadFilefilePath参数来定义文件名。

    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',
          })
        },
      })
    }
相关推荐
小堃学编程10 小时前
【项目实战】基于protobuf的发布订阅式消息队列(2)—— 线程池
java·开发语言
每日任务(希望进OD版)10 小时前
线性DP、区间DP
开发语言·数据结构·c++·算法·动态规划
怨言.10 小时前
Java内部类详解:从基础概念到实战应用(附案例)
java·开发语言
AC赳赳老秦10 小时前
OpenClaw image-processing技能实操:批量抠图、图片尺寸调整,适配办公需求
开发语言·前端·人工智能·python·深度学习·机器学习·openclaw
XiYang-DING10 小时前
【Java】 Java 集合框架
java·开发语言
charlie11451419110 小时前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
叫我一声阿雷吧10 小时前
JS 入门通关手册(44):宏任务 / 微任务 / Event Loop(前端最难核心,面试必考
javascript·宏任务·event loop· 前端面试· 微任务· 事件循环·js单线程
diving deep10 小时前
从零构建大模型--实操--搭建python环境
开发语言·python
We་ct10 小时前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
军军君0110 小时前
数字孪生监控大屏实战模板:可视化数字统计展示
前端·javascript·vue.js·typescript·echarts·数字孪生·前端大屏