jszip实现批量下载mp4、psd、jpg等各种类型文件,并压缩导出
2023-12-14 10:42:09
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>批量下载并压缩文件</title>
<style>
.color{display: inline-block; height: 20px; width: 500px; background: #eee; border: 1px solid #000; margin-top: 20px;}
.span{background: red; height: 100%; width: 0;}
</style>
</head>
<body>
<button onclick="downloadAndZip()">下载并压缩</button>
<div class="box">
进度: <div class="color"><div class="span"></div></div>
<script src="js/jszip.min.js"></script>
<script src="js/jszip-utils.min.js"></script>
<script>
function downloadAndZip() {
// 创建JSZip实例
var zip = new JSZip();
// 文件URL列表
var fileUrls = [
'main/4.psd',
'main/media.mp4',
'main/pic1.gif',
'main/pic2.png',
// 添加更多文件URL
];
// 计数器,用于跟踪下载进度
var downloadCount = 0;
// 下载文件并添加到压缩包
function downloadFile(url) {
return JSZipUtils.getBinaryContent(url).then(function (data) {
// 将文件添加到压缩包
zip.file(url.substring(url.lastIndexOf('/') + 1), data, { binary: true });
// 增加下载计数
downloadCount++;
// 更新进度
updateProgress();
return Promise.resolve();
});
}
// 更新下载进度
function updateProgress() {
var span = document.getElementsByClassName("span")[0];
span.style.width = (downloadCount / fileUrls.length) * 100 + "%";
console.log('已下载文件数:', downloadCount, '/', fileUrls.length);
// 如果所有文件都已下载,创建并下载压缩包
if (downloadCount === fileUrls.length) {
zip.generateAsync({ type: 'blob' }).then(function (blob) {
// 创建下载链接
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'compressed_files.zip';
// 模拟点击下载链接
link.click();
console.log('下载完成!');
});
}
}
// 循环下载文件
fileUrls.forEach(function (url) {
downloadFile(url);
});
}
</script>
</body>
</html>
文章来源:https://blog.csdn.net/qq_44681558/article/details/134987303
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!