DNN后台文件管理页-批量下载文件
勾选需要下载的,
然后在控制台输入下方代码
需要设置前置url变量---preUrl
文件名会自动补充
(function(){
// 创建一个<script>标签并设置其src属性为JSZip的CDN链接
var script = document.createElement('script');
script.src = "https://cdnjs.cloudflare.com/a ... 3B%3B
// 将脚本添加到页面中
document.body.appendChild(script);
// 前置Url
const preUrl = "";
// 文件URL
let fileUrls = [];
// DNN勾选
let itemTitle = $(".rgSelectedRow .dnnModuleDigitalAssetItemNameTemplate");
for (let index = 0; index < itemTitle.length; index++) {
const curUrl = itemTitle.eq(index).attr("title");
fileUrls.push(preUrl + curUrl);
}
// 等待脚本加载完成
script.onload = function() {
// 用于从URL下载文件并将其添加到JSZip对象的函数
async function downloadAndZipFiles(urls) {
const zip = new JSZip();
for (let url of urls) {
console.log("正在下载:", url.split(preUrl)[1]);
const response = await fetch(url);
const blob = await response.blob();
// 给文件在ZIP中设置一个名称
const filename = url.split('/').pop();
zip.file(filename, blob, { binary: true });
}
// 将JSZip对象转换为Blob
const content = await zip.generateAsync({ type: 'blob' });
// 创建下载链接并触发下载
const downloadUrl = URL.createObjectURL(content);
const downloadLink = document.createElement('a');
downloadLink.href = downloadUrl;
downloadLink.download = 'downloaded-files.zip';
document.body.appendChild(downloadLink);
downloadLink.click();
// 下载完成后撤销URL
document.body.removeChild(downloadLink);
URL.revokeObjectURL(downloadUrl);
}
// 调用函数开始批量下载并打包ZIP
downloadAndZipFiles(fileUrls);
};
})();