jszip插件實現(xiàn)圖片打包下載的方法分析 原創(chuàng)
前言
由于后端使用php、node.js、java等進行大量的圖片下載操作可能會導(dǎo)致服務(wù)器負(fù)載過高,所以將圖片下載轉(zhuǎn)移到客戶端是個不錯的選擇,借助 HTML5 中的新特性 Blob 和 URL.createObjectURL API 實現(xiàn)。
實現(xiàn)代碼
function download(){ var urls = [ "https://example.com/img1.jpg", "https://example.com/img2.png" ]; var zip = new JSZip(); var count = 0; urls.forEach((url, index) => { var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.responseType = "blob"; xhr.onload = function () { if (xhr.status === 200) { var name = url.substring(url.lastIndexOf("/") + 1); zip.file(name, xhr.response); } count++; if (count === urls.length) { zip.generateAsync({type:"blob"}).then(function(content) { saveAs(content, "pictures.zip"); console.log("下載成功"); }); } }; xhr.send(); }); }
另外,注意:在頁面頂部還需要引入jszip插件
<head> <script src="https://cdn.bootcdn.net/ajax/libs/jszip/3.6.0/jszip.min.js"></script> </head>
這樣可以將圖片下載過程從服務(wù)器轉(zhuǎn)移到客戶端,從而減輕服務(wù)器壓力。同時需要注意的是,在使用客戶端進行大量圖片下載時,也要防止網(wǎng)絡(luò)請求并發(fā)數(shù)量過多導(dǎo)致瀏覽器崩潰。
相關(guān)文章
DeviceOne 讓你一見鐘情的App快速開發(fā)平臺
DeviceOne是一個非常先進的App開發(fā)平臺,使用Javascript 構(gòu)建原生體驗的移動應(yīng)用程序,DeviceOne主要關(guān)注外觀和體驗,以及和你的應(yīng)用程序的 UI 交互2016-02-02js實現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的3種方式舉例
在JavaScript中將圖片的絕對路徑轉(zhuǎn)換為base64字符串或blob對象,是常見的圖片上傳前的預(yù)處理步驟,這篇文章主要介紹了js實現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的3種方式,需要的朋友可以參考下2025-04-04JavaScript實現(xiàn)定時頁面跳轉(zhuǎn)功能示例
這篇文章主要介紹了JavaScript實現(xiàn)定時頁面跳轉(zhuǎn)功能,涉及javascript結(jié)合時間函數(shù)定時觸發(fā)自定義函數(shù)功能操作技巧,需要的朋友可以參考下2017-02-02JS中showModalDialog關(guān)閉子窗口刷新主窗口用法詳解
這篇文章主要介紹了JS中showModalDialog關(guān)閉子窗口刷新主窗口用法,結(jié)合具體實例形式較為詳細(xì)的分析了showModalDialog常見用法與相關(guān)使用技巧,需要的朋友可以參考下2017-03-03