uni-app:使用plus.downloader.createDownload进行文件下载(web-view和APP页面都可用)

上一篇 uni-app:web-view实现文件(非图片视频文件)上传与下载,末尾对于文件采用了触发a标签的方式进行下载,虽然可行,但难免有点low。后来考虑到我们上传的文件名称在后端被篡改(时间戳+随机数),但是当用户进行下载时,最好的体验应该是文件名称不变,这时可以用html5plus中的plus.downloader.createDownload进行文件下载,重命名。具体用法如下:
plus.downloader.createDownload(url,options,completedCB)
说明:请求下载管理创建新的下载任务,创建成功则返回DOwnload对象,用于管理下载任务。

  • url:文件所在的资源地址(仅支持网络资源地址,支持HTTP或HTTPS协议,允许创建多个相同的url地址的下载任务。注意,若url中含有空格或中文,请使用urlencode转换)
  • options:可用来设置下载任务属性,如保存路径、下载优先级等。
参数说明
method 网络请求类型(String 类型 )支持http协议的GET、POST,默认为GET
data(String 类型 )POST请求时提交的数据
filename(String 类型 )下载文件的保存路径,具体的路径支持请查看官方文档
priority(Number 类型 )下载任务的优先级
timeout(Number 类型 )下载任务超时时间(指服务器响应请求的时间,而不是完成下载的总时间),默认120s
retry(Number 类型 )下载任务重试次数,默认3次
retryInterval(Number 类型 )下载任务重试间隔时间,默认30s
  • completedCB:下载任务完成回调函数,成功失败都会触发
var name = test.doc;   //文件名称可以在上传时进行保存,下载时取出,当文件名称中存在单双引号时,要做好处理,否则会报错
var dtask = plus.downloader.createDownload(url,{
	filename:"_downloads/"+name            //利用保存路径,实现下载文件的重命名
},function(d,status){
	//d为下载的文件对象
	if(status==200){
		//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
		var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
		plus.runtime.openFile(d.filename);	   //选择软件打开文件
    }else{	
    	//下载失败
    	plus.downloader.clear();        //清除下载任务
    }
})
dtask.start(); 
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值