uni-app 打开文件(文件或文件流)

本文档介绍了如何使用uniapp和koa搭建一个后台服务,以提供Excel和Word文件下载,并在平板上通过WPS应用程序打开。通过创建koa路由返回二进制文件流,uniapp端调用downloadFile接口下载文件,再使用openDocument打开。需要注意的是,此过程依赖于设备上安装的WPS应用,并可能涉及跨域问题,需要后台配置CORS。
摘要由CSDN通过智能技术生成

需求:uniapp可以在平板上面打开excel文件或word文件,可以用wps打开后打印

1. 创建个koa项目模拟后台返回二进制文件流

const router = require("koa-router")();
const xlsx = require("node-xlsx");

router.get("/excel", async (ctx, next) => {
  const res = [
    ["name", "age"],
    ["wuliu", "111"],
  ];
  const buffer = xlsx.build([{ name: "firstSheet", data: res }]);
  ctx.set(
    "Content-Disposition",
    "attachment;filename=test.xlsx;filename*=UTF-8"
  );
  // 返回给前端
  ctx.body = buffer;
});

module.exports = router;

2. uniapp 下载文件

uni.downloadFile({
	url: BaseConfig.BASE_API + '/excel?id=' + item.id, // 二进制文件流
    // url: BaseConfig.BASE_API + '/excel.xlsx' // 直接下载文件
	header:{ // 鉴权、根据自己项目
		'check-device-type': 'app'
	},
	success: (res1) => {
		const tempFilePath = res1.tempFilePath
		uni.saveFile({
			tempFilePath,
			success:(res2)=>{
				//res.savedFilePath文件的保存路径
				//保存成功并打开文件
				uni.openDocument({
					filePath: res2.savedFilePath,
					success:(res3) =>console.log('成功打开文档'),
					fail: (err) => {
						console.log('失败')
						console.log(err)
					}
				})
			},
			fail:(err)=>{
				console.log('下载失败')
				console.log(err)
			}
		})
	},
	fail: (err) => {
		console.log('err' + err)
	}
})

 3. 踩坑

  • 手机或平板上面必须有wps才可以成功打开
  • 打开文件可能存在跨域,这个需要后台去进行配置cors
  • 二进制文件流和文件都可以用上面那套代码
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值