工作需要,由於html無法訪問並下載帶有中文的路徑,例子:“127.0.0.1::8088/files/第一張圖片.jpg”,所以想到了先將原圖片壓縮並命名為不帶中文的文件名,下載后用戶自行解壓縮的方法。
此次采用的包為:archiver
下面是此次我使用該包的源代碼和注釋,供同學們參考:
var ARCHIVER = require('archiver'); var FS = require('fs'); var presentDate = new Date(); var myDate = presentDate.toLocaleDateString();//獲取當前日期,eg:2017-02-08,以此日期為壓縮包文件名 var path1 = '/ARCHIVER/appData/files/第一張圖片.jpg';//圖片的絕對路徑 var path2 = '/ARCHIVER/appData/files/第二張圖片.jpg'; var files = [path1, path2];//將圖片路徑組合成數組形式,用for循環遍歷 //壓縮后文件輸出地址:/ARCHIVER/appData/files/,壓縮包名:eg:2017-02-08.zip var output = FS.createWriteStream(/ARCHIVER/appData/files/ + myDate + '.zip'); //archiver可壓縮為zip或tar格式,這里選擇zip格式,注意這里新定義了一個變量archive,而不是原有的archiver包引用 var archive = ARCHIVER('zip', { store: true }); //將壓縮路徑、包名與壓縮格式連接 archive.pipe(output); //nameInZIP指壓縮包內的文件名 var nameInZIP = ['第一張圖片.jpg', '第二張圖片.jpg']; for (var i = 0; i < files.length; i++) { console.log(files[i]); //FS讀取文件流並命名,將讀取的文件流append到壓縮包中 archive.append(FS.createReadStream(files[i]), {'name': nameInZIP[i]}); } //壓縮結束 archive.finalize();