javascript
jszip压缩服务器文件,使用JSZip压缩驻留在服务器上的PDF
對不起,在這篇文章中缺少鏈接:這是我在stackoverflow上的第一篇文章,正如錯誤消息所說,“[我]需要至少10個聲望才能發布2個以上的鏈接。”
下載PDF(或任何二進制文件),你可以使用xhr.responseType = "arraybuffer"來獲取原始內容(警告:這不會在IE 6-9的工作,更對下文)。你不能使用jQuery來做到這一點(但請參閱github.com/jquery/jquery/pull/1525),但是原始xhr查詢或處理二進制數據的任何ajax庫都可以使用。例如jszip-utils在github.com/Stuk/jszip-utils(免責聲明:我是該庫的貢獻者)。
下面是代碼:
此功能使用JSZipUtils,結果包裝成能夠返回一個ArrayBuffer或Uint8Array將工作jQuery.Deferred但任何圖書館。
/**
* Fetch the content, add it to the JSZip object
* and use a jQuery deferred to hold the result.
* @param {String} url the url of the content to fetch.
* @param {String} filename the filename to use in the JSZip object.
* @param {JSZip} zip the JSZip instance.
* @return {jQuery.Deferred} the deferred containing the data.
*/
function deferredAddZip(url, filename, zip) {
var deferred = $.Deferred();
JSZipUtils.getBinaryContent(url, function (err, data) {
if(err) {
deferred.reject(err);
} else {
zip.file(filename, data, {binary:true});
deferred.resolve(data);
}
});
return deferred;
}
這是主要的功能,它采用FileSaver.js為saveAs一個填充工具:
var $form = $("#download_form").on("submit", function() {
var zip = new JSZip();
var deferreds = [];
// find every checked item
$(this).find(":checked").each(function() {
var url = $(this).data("url");
var filename = url.replace(/.*\//g, "");
deferreds.push(deferredAddZip(url, filename, zip));
});
// when everything has been downloaded, we can trigger the dl
$.when.apply($, deferreds).done(function() {
var blob = zip.generate({type:"blob"});
// see FileSaver.js
saveAs(blob, "example.zip");
}).fail(function (err) {
// handle the error here
});
return false;
});
注意對IE 6-9:jszip和jszip-utils的支持IE 6-9,但沒有ArrayBuffer/Uint8Array,你會得到糟糕的表演。
總結
以上是生活随笔為你收集整理的jszip压缩服务器文件,使用JSZip压缩驻留在服务器上的PDF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弹性服务器怎么上传文件,上传哪个文件夹弹
- 下一篇: 小象优品显示打款中要多久到账