是否可以创建一个仅使用JavaScript编写的客户端站点应用程序(在浏览器中运行),该应用程序通过ajax获取多个图像文件,然后将其压缩为zip(或tar或其他)并将其返回给用户作为文件下载(没有任何服务器端逻辑)?
工作流程如下:
mydomain.com/images/image1.png
和mydomain.com/images/image2.jpg
收集图片。到目前为止,我认为我可以通过jQuery运行第1-2部分:
var urls = [
'image1.png',
'image2.jpg'
];
var images = [];
var counter = 0;
function createArchive(images){
// How to implement this?
}
function download(archive){
// How to implement this?
}
for (var i = 0; i<urls.length; i++) {
$.ajax('images/' + urls[i]).done(function(data) {
images.push(data);
counter++;
// Offer download of archive when all ajax calls are done
if (counter == urls.length){
var archive = createArchive(images);
download(archive);
}
});
}
但是从这里我不知道如何从images数组创建zip文件。我该怎么做?
重要:这必须在IE,Firefox,Chrome,Safari等所有主要浏览器中运行
答案 0 :(得分:3)
圣洁的莫莉!我使用这些库来使用它:
<强> HTML 强>
Cursor videocursor = getActivity().getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
columns,
MediaStore.Video.Media.DATA + " like ? ",
new String[]{"%/" + Your folder name + "/%"},
null);
我的 script.js
<!doctype html>
<html>
<head>
<title>Zipper</title>
<script src="jszip.min.js"></script>
<script src="FileSaver.min.js"></script>
<script src="script.js"></script>
</head>
<body>
</body>
</html>
答案 1 :(得分:0)
简短的回答,没有。 JavaScript可以从服务器下载数据,并且可以通过某些库实现压缩(Google快速返回两个结果https://gildas-lormeau.github.io/zip.js和https://stuk.github.io/jszip,后者是Node实现),但是从客户端执行下载是不可能的。
您必须拥有某种服务器逻辑,我建议您拨打一个可以生成文件和zip的电话。