uniapp下载文件的方案,包括H5,App方案解决办法

  1. 在uniapp需要下载文件,但是显示情况是不能下载。所以只能使用该办法来进行下载。

  2. 这有一个注意点是:如果你做的是H5的方案,那么我已经替你踩好坑了,UC浏览器是不支持blob类型的下载,以及创建a标签的方案来进行下载。目前发现只有QQ浏览器支持这两种方案。如果你是保密单位,QQ浏览器其实也是可以,因为也是国产化的浏览器。

代码体现:

首先获取后端给你返回的文件下载地址:

javascript 复制代码
mounted() {
			this.fatIdList = this.config.modelId
			this.$refs.uToast.show({
				type: 'warning',
				icon: false,
				title: '若UC浏览器无法下载模板,请使用QQ浏览器下载!',
				duration: 3000,
			})
			deliverDownloadApi(this.fatIdList, {
				"currentPage": 1,
				"pageSize": 20,
				"sort": "desc",
				"sidx": "",
				"menuId": this.fatIdList,
				"queryJson": "",
				"superQueryJson": '',
				"idList": [],
				"dataType": "1",
				"selectKey": []
			}).then(data => {
				this.fileUrl = this.define.baseURL + data.data.url
				this.download()
			})
		},

第二步:调取uniapp的原始下载方法uni.downloadFile

javascript 复制代码
// 点击下载
			download() {
				setTimeout(() => {
					// 更多参数,详见文档
					// https://uniapp.dcloud.net.cn/uni-app-x/api/download-file.html#downloadfile
					uni.downloadFile({
						url: this.fileUrl, //下载地址
						header: this.header, //HTTP请求Header
						timeout: 150000, //下载超时时间(毫秒)
						success: (res) => {
							// 利用临时地址调起下载
							this.arouse(res)
						},
						fail: (err) => {
							console.log('下载失败', err)
						}
					})
				}, 3000)
			},

第三步:

创建a标签的方法来下载:

javascript 复制代码
// 利用临时地址调起下载
			arouse(res) {
				let date = new Date()
				let file_name = '退换货管理(标准化)' + this.dateFormat(date)
				// eslint-disable-next-line camelcase
				let file_type = 'xlsx'
				// console.log(res)
				var oA = document.createElement("a")
				// 设置下载的文件名
				oA.download = `${file_name}.${file_type}`
				// Blob临时路径再保存到本地
				oA.href = res.tempFilePath
				// 插入DOM并执行点击下载
				document.body.appendChild(oA)
				oA.click()
				oA.remove()
			},

第四步:直接打开QQ浏览器开始下载

相关推荐
Geek_Vison5 小时前
保险APP已经用了Flutter,还能接入小程序吗?
flutter·小程序·uni-app·mpaas·小程序容器
郑州光合科技余经理16 小时前
本地生活平台搭建:跨业态用户标识怎么贯通
java·开发语言·前端·后端·uni-app·php·ai编程
2501_915909062 天前
iOS应用从开发到上架App Store的完整发布流程与步骤指南
android·ios·小程序·https·uni-app·webview
不爱说话郭德纲2 天前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
snotJam2 天前
关于Uniapp的Android自定义基座使用
android·uni-app
今年下半年3 天前
【微信小程序】uni-app + Vue3 + Vite 的小程序项目实现「进入指定范围才能打卡」的考勤功能
微信小程序·uni-app·定位·考勤
郑州光合科技余经理6 天前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
遗憾随她而去.7 天前
uniApp跨端开发: 解决不同平台显示差异问题
uni-app
程序鉴定师11 天前
2026年深圳小程序/App开发公司技术选型指南:从架构设计到交付标准全维度评估
java·小程序·uni-app·php·objective-c
Q264336502311 天前
【有源码】基于uni-app的旅游行程规划小程序-基于微信小程序的智慧文旅综合服务平台
java·微信小程序·小程序·uni-app·毕业设计·springboot·源代码