移动端下载文件并打开对应程序查看

4 篇文章 0 订阅
本文档介绍了在Vue应用中如何利用H5+Plus库下载文件,并在下载完成后自动调用第三方应用打开文件。主要步骤包括:前端下载文件并打开应用的方法,调用方法的示例,以及后端提供下载文件的方法。在下载过程中,通过监听下载状态更新进度,并在完成时尝试使用设备上的应用打开文件。
摘要由CSDN通过智能技术生成

前言

在vue中用h5+plus下载文件并自动打开相应的应用程序

一、使用步骤

1.前端下载文件并打开应用方法

export default{
    //下载文件并查看
    _downFile(item){
        let docBizNo = item.docBizNo;
		let docNo = item.docNo;
		let docName = item.docName;
		let FileSystemURL = '_downloads/' + docName;
		plus.io.resolveLocalFileSystemURL(FileSystemURL, function(entry) {
			plus.nativeUI.showWaiting("下载中");
			if(entry.isFile) {
				entry.remove();
				let dtask = plus.downloader.createDownload(config.url + "/getFileDownload?docNo=" + docNo + "&docBizNo=" + docBizNo, {
					method: "GET",
					filename:FileSystemURL    //利用保存路径,实现下载文件的重命名
				}, function(d, status) {
					// 下载完成
					if(status == 200) {
						plus.nativeUI.closeWaiting();
						plus.runtime.openFile(d.filename, {}, function(e) { //调用第三方应用打开文件
							alert('打开失败,请确认是否安装相应程序');
						});
					} else {
						plus.nativeUI.closeWaiting();
						alert("下载失败");
					}
				});
				dtask.setRequestHeader('Content-Type', 'application/json'); // 设置POST请求提交的数据类型为JSON字符串
				dtask.start();
			}
		}, function() {
			let w = plus.nativeUI.showWaiting("下载中...");
			let dtask = plus.downloader.createDownload(config.url+"/b/doc/getFileDownload?docNo=" + docNo + "&docBizNo=" + docBizNo, {
				method: "GET",
				filename:FileSystemURL    //利用保存路径,实现下载文件的重命名
			}, function(d, status) {
				// 下载完成
				if(status == 200) {
					plus.nativeUI.closeWaiting();
					plus.runtime.openFile(d.filename, {}, function(e) { //调用第三方应用打开文件
						alert(d.filename)
						alert('打开失败,请确认是否安装相应程序');
					});
				} else {
					plus.nativeUI.closeWaiting();
					alert("下载失败");
				}
			});
			dtask.setRequestHeader('Content-Type', 'application/json'); // 设置POST请求提交的数据类型为JSON字符串
			dtask.addEventListener('statechanged', (task) => {
				if (!dtask) { return; }
				switch (task.state) {
					case 1:
						w.setTitle("开始下载...")
						console.log('开始下载');
						break;
					case 2:
						w.setTitle("链接到服务器...")
						console.log('链接到服务器...');
						break;
					case 3:
						var progressVal = 0;
						progressVal = Math.ceil(task.downloadedSize / task.totalSize * 100);
						w.setTitle("下载文件中...("+progressVal+"%)")
						break;
					case 4:
						console.log('监听下载完成');
						w.setTitle("监听下载完成...")
						break;
				}
			});
			dtask.start();
		});
    },
}

2.调用方法

 if (window.plus) {
     fileApi._downFile(item)
 }

3.后端下载方法

public ResponseEntity<byte[]> getFileDownload(String docNo, String docBizNo) {
        ResultBean<Map<String,Object>>  resultBean=new ResultBean<Map<String,Object>>();
        ResponseEntity<byte[]> entity = null;
        try {
            entity = docFeign.getFileDownload(docNo, docBizNo);
        } catch (Exception e) {
            logger.error("获取文件出错", e);
        }
        return entity;
 }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值