js实现oss批量下载文件_前端实现批量打包下载文件

本文介绍了一种纯前端实现批量下载阿里云OSS上的文件的方法,包括图片和PDF。通过JSZip和FileSaver库,结合Canvas处理图片下载限制,实现了批量打包下载功能。
摘要由CSDN通过智能技术生成

需求说明:

后端接口返回附件列表(含URL),这些附件存在阿里云OSS上。一期需求是实现对列出的附件进行点击下载,也就是每次只下载点击的附件(PDF | 图片),使用一段时间后制定二期需求时,增加批量下载功能,需要打包在一起。附言:本文所写都是纯前端实现,后端接口只需要返回路径即可。

单独下载图片:

直接使用标签,会存在这样的问题:同源链接点击后直接在浏览器打开,通过在标签内指定download属性可以避免,但是非同源链接却不行。所以通过Canvas + JS方式实现点击图片直接下载,这里要解决这么几个问题:1、非同源及跨域问题;2、Canvas图片下载限制问题。同源问题很好解决,只需要一行代码:

image.setAttribute('crossOrigin', 'anonymous')

为了解决Canvas图片像素大小的限制,转为blod流数据,下面附上代码:

/**

* @param {Number} imgsrc 图片路径

* @param {Number} name 自定义图片名称

* 直接使用canvas下载有图片像素大小的限制,所以转成blod流下载

**/downloadIamge (imgsrc, name) {//下载图片地址和图片名

let image = newImage()//解决跨域 Canvas 污染问题

image.setAttribute('crossOrigin', 'anonymous')

let fun= this.data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值