Javascript 生成Zip文件包含不带JSZip库的文件列表
各位开发者好, 我正试图从XMLHttpRequest()请求方法下载文件列表,并将其存储在文件数组中。我想使用javascript压缩数组中的所有文件,而不使用任何第三方库。 我试图通过URL.createObjectURL(URL)和URL.revokeObjectURL(URL)方法实现这一点,但我得到的文件已损坏 我正在分享我的代码片段,请帮帮我Javascript 生成Zip文件包含不带JSZip库的文件列表,javascript,jquery,Javascript,Jquery,各位开发者好, 我正试图从XMLHttpRequest()请求方法下载文件列表,并将其存储在文件数组中。我想使用javascript压缩数组中的所有文件,而不使用任何第三方库。 我试图通过URL.createObjectURL(URL)和URL.revokeObjectURL(URL)方法实现这一点,但我得到的文件已损坏 我正在分享我的代码片段,请帮帮我 const URLS = [ 'https://vr.josh.earth/assets/2dimages/satu
const URLS = [
'https://vr.josh.earth/assets/2dimages/saturnv.jpg',
'https://vr.josh.earth/assets/360images/hotel_small.jpg',
'https://vr.josh.earth/assets/360images/redwoods.jpg'
];
$(document).ready(function () {
debugger
$("#downloadAll").click(function () {
var blob = new Array();
var files = new Array();
URLS.forEach(function (url, i) {
getRawData(url, function (err, data) {
debugger
var mydata = data;
// mydata = btoa(encodeURIComponent(data));
// var blobData = b64toBlob(mydata , 'image/jpg');
var blobData = new Blob([mydata], { type: 'image/jpg' });
blob.push(blobData);
var filename = "testFiles" + i + ".jpg";
var file = blobToFile(blobData, filename);
files.push(file);
debugger
if (files.length == URLS.length) {
// saveData(blob, "fileName.zip");
var AllBlobData = new Blob([blob], { type: 'application/zip' });
saveData(AllBlobData, "Test.zip");
// saveFile("DownloadFiles.zip", "application/zip", files)
}
});
});
});
});
//使用XMLHttpRequest()方法检索记录
//用于将文件保存到zip
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
// var AllBlobs = new Blob([data], { type: "" });//application/zip //octet/stream
// var url = window.URL.createObjectURL(AllBlobs);
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
//下载的压缩文件
如果没有第三方,您需要自己实现zip archiver。没有图书馆你为什么需要它?另外,为什么您决定
createObjectURL
返回一个zip?我的客户机不想添加任何第三方库。这就是为什么,我尝试通过从这个链接找到这个解决方案()来实现这一点。没有第三方,您需要自己实现zip archiver。没有图书馆你为什么需要它?另外,为什么您决定createObjectURL
返回一个zip?我的客户不想添加任何第三方库。这就是为什么,我尝试通过从这个链接找到这个解决方案来实现这一点()
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
// var AllBlobs = new Blob([data], { type: "" });//application/zip //octet/stream
// var url = window.URL.createObjectURL(AllBlobs);
var url = window.URL.createObjectURL(data);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());