提供多个用于下载的base64图像。
问题的原因是在页面上同时下载多个base64格式的图片会导致浏览器给出警告或弹出多个保存对话框,给用户带来不便。解决方法是使用JSZip库将多个图片打包成一个zip文件供用户下载。以下是具体的解决方法:
首先,在页面中插入一个按钮和多个带有class属性为"dl"的img标签,每个img标签的src属性为对应图片的base64编码。
接着,在页面中插入以下JavaScript代码:
function download(data, file_name) { const a = document.createElement("a") a.href = data const extension = data.match(/^data:(.*?)\/(.*?);/)[2] a.setAttribute("download", file_name + "." + extension) a.style.display = "none" a.addEventListener("click", e => e.stopPropagation()) // not relevant for modern browsers document.body.appendChild(a) setTimeout(() => { // setTimeout - not relevant for modern browsers a.click() document.body.removeChild(a) }, 0) } function download_all() { [...document.getElementsByClassName("dl")] .forEach((img, i) => download(img.src, "img" + i)) } document .getElementById("dl_all") .addEventListener("click", download_all)
然后,在页面中插入一个按钮,id为"dl_all",并给它添加点击事件监听器,点击按钮时会调用download_all函数,该函数会遍历所有带有class属性为"dl"的img标签,将每个img标签的src属性传给download函数进行下载,文件名为"img" + i,其中i为img标签在遍历中的索引值。
最后,引入JSZip库,并在页面中插入一个按钮,id为"dl_all_oldschool",并给它添加点击事件监听器,点击按钮时会调用download_all_oldschool函数,该函数会使用JSZip库将所有带有class属性为"dl"的img标签的base64编码打包成一个zip文件,然后通过设置window.location.href实现文件的下载。
总结起来,通过以上的解决方法,我们可以实现在页面中同时下载多个base64格式的图片,且可以选择将图片打包成zip文件进行下载,提供了更好的用户体验。