当前位置: 首页 > article >正文

uniapp——App下载文件,打开文档(一)

uniapp如何下载文件、打开文件

文章目录

    • uniapp如何下载文件、打开文件
      • 下载文件
        • 下载文件成功返回数据格式
      • 打开文档
      • 处理` iOS` 打开文件可能失败问题

相关API:

  • uni.downloadFile
  • uni.openDocument

注意:

  • 只支持 GET 请求,需要 POST的,可以看另一篇文章;
  • 打开文档:不支持H5;
  • 为了方便测试,这里没有封装,自行抽取即可;
  • 只测试APP Android端,其他设备没有细测;

下载文件

在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。在h5上是跨域的,用户需要处理好跨域问题。

  • 通过 uni.downloadFile 结合 uni.openDocument 实现;
  • 下载成功后,直接打开文档,没有做保存操作;
  • 如需监听下载进度:调用 onProgressUpdate
downloadFile() {
	// 头部信息根据实际情况填写
    let header = {
        Authorization: getToken()
    }
    
    uni.downloadFile({
        url: 'xxx/export', // 下载资源的 url
        header,
        success: (res) => {
            const { statusCode, tempFilePath } = res;
            console.log('下载成功--->', res);
            if (statusCode == 200) {
                this.openDocument(tempFilePath);
            }
        },
        fail: (err) => {
            uni.showToast({
                title: '下载失败',
                icon: 'error'
            })
        }
    })
}

下载文件成功返回数据格式
  • 返回文件的本地临时路径
{
    "tempFilePath": "_doc/uniapp_temp_1735636109698/download/export",
    "statusCode": 200,
    "errMsg": "downloadFile:ok"
}

打开文档

openDocument(filePath) {
    filePath = this.fileNameEscape(filePath)
    uni.openDocument({
        filePath,
        showMenu: true, // 右上角是否有可以转发分享的功能
        fileType: 'xlsx', // 文件类型,有效值 doc, xls, ppt, pdf, docx, xlsx, pptx,
        success: (res) => {
            uni.showToast({
                title: '打开文档成功'
            })
        },
        fail: (err) => {
            uni.showToast({
                title: '打开文档失败',
                icon: 'error'
            })
        }
    })
},

处理 iOS 打开文件可能失败问题

  • 下载文件名中包含中文字符时会失败情况
fileNameEscape(filename) {
    if (uni.getSystemInfoSync().platform == "ios") {
        filename = escape(filename);
    }
    return filename;
},

http://www.kler.cn/a/463784.html

相关文章:

  • 我的桌面 1.9.75 | 个性化定制手机桌面,丰富的小组件和主题
  • tcpdump指南(1)
  • Ansys Aqwa 中 Diffraction Analysis 的疲劳结果
  • 【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地教程
  • ros2 py文件间函数调用
  • 【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
  • DeepSeek LLM通过长期主义扩展开源语言模型
  • python基础004--flask
  • python实现自动登录12306抢票 -- selenium
  • JavaSpring AI与阿里云通义大模型的集成使用Java Data Science Library(JDSL)进行数据处理
  • 上传第三方jar包到maven私服仓库的两种方法
  • 逆向生成原理
  • CSS系列(40)-- Container Queries详解
  • 第8章 汇编语言--- 循环结构
  • SQL语句 相关学习
  • 接口测试Day04-postman生成测试报告ihrm项目
  • 深度剖析 Android Animation 框架
  • android10 audio音量曲线
  • SpringBoot 新特性
  • 使用Windows和FFmpeg 将https://xxx.com/xx.m3u8 推流到B站
  • 二十三种设计模式-建造者模式
  • 【2024年-12月-31日-开源社区openEuler实践记录】virtCCA_sdk:开启虚拟化安全增强的编程新钥
  • Maven 测试和单元测试介绍
  • 项目管理:用甘特图 “导航” 项目全程
  • tensorboard的界面参数与图像数据分析讲解
  • MYSQL 高阶语句