这篇文章主要介绍了JS如何实现单个或多个文件批量下载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS如何实现单个或多个文件批量下载文章都会有所收获,下面我们一起来看看吧。缺点:1.只支持get请求,不支持post请求。2.浏览器会根据header
的content-type
来判断是下载文件还是预览文件。比如 txt
png
等格式文件,会在当前tab或新tab中预览,而不是下载下来。3.由于只支持get,会有url参数过长问题。4.不能加request header
,无法做权限验证等逻辑。5.不支持自定义file name。通过HTML a标签的原生属性,使用浏览器下载。https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/a#attr-download优点:都是走的浏览器下载文件逻辑,不会预览文件。当前tab打开方式下载。支持设置file name。缺点:只支持get请求,不支持post请求。不能加reque免费云主机域名st header
,无法做权限验证等逻辑。不支持跨域地址。API发送请求的方式,获取文件blog
对象,然后通过URL.createObjectURL
方法获取download url,然后用方案二的方式下载。
URL.createObjectURL
生成的url如果过多会有效率问题,可以在合适的时机(download后)释放掉。优点:因为最后用的是方案二,所以满足方案二的优点。支持post请求、支持跨域(fetch本身支持)。可以加request header
。缺点:低版本浏览器不支持,可以通过'download' in document.createElement('a')
判断是否支持。浏览器兼容可能有问题,比如Safari、IOS Safari。有些需求是,点一个按钮需要把多个文件同时download下来,有以下几个方案可以实现。利用上面的方案二的方式下载,会触发浏览器是
Download multiple files
提示,如果选了Allow
则会正常下载。尝试每个download之间加延迟,依然会弹提示。这个应该是浏览器机制问题了,没办法避免了。前端可以通过一个第三方库 jszip
,可以把多个文件以blob、base64或纯文本等形式,按自定义的文件结构,压缩成一个zip文件,然后通过浏览器download下来。官网:stuk.github.io/jszip/ 用法不难,直接看code:jszip
还支持一些别的类型文件压缩,比如纯文本、base64、binary等等。由于走的是纯前端压缩,所以会有延迟问题,走到最后download时才会调起浏览器下载,所以页面可能需要一个效果来更新压缩进度。zip.generateAsync
方法就支持第二个参数,支持进度更新:后台加个api,然后把需要download的文件在后台压缩成zip,然后把文件流输出出来。然后就和单个文件download一样了。因为后台会先压缩,会有延迟才会把blob返回前台,而且需要传多个文件信息,一般是post请求,所以建议使用单个文件下载的方案三通过API请求实现,在请求前后加上提示语或loading效果。关于“JS如何实现单个或多个文件批量下载”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“JS如何实现单个或多个文件批量下载”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。
本篇内容主要讲解“uniapp手机验证码免费云主机域名输入框如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“uniapp手机验证码输入框如何实现”吧!如键盘被隐藏,可直接点击蓝框弹出键盘,蓝框就相当于inpu…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。