0

我正在为图像板类型的网站开发 Safari 扩展,我希望实现的更大功能之一是能够下载所有图像(发布的图像,而不是全局页面级图像)已发布。

这里已经有类似的问题,但我的有点不同,因为有问题的图像托管在完全不同的服务器上。我一直在集思广益,并认为将所有图像 URL 收集到 JS 数组中,然后将其发送到我的服务器以转换为 zip 文件(强制下载,而不仅仅是文件的链接)将是最好的要走的路。我还希望在用户下载后删除 zip。

我已经完成了大部分的扩展功能,但是这个让我很难过。任何帮助将不胜感激。

我该怎么做呢?

4

2 回答 2

0

您可以使用 PHP 的ZipArchive类制作 ZIP,然后将其流式传输到浏览器。

<?php
// Create temp zip file
$zip = new ZipArchive;
$temp = tempnam(sys_get_temp_dir(), 'zip');
$zip->open($temp);

// Add files
$zip->addFromString('file.jpg', file_get_contents('http://path/to/file.jpg'));
$zip->addFile('/this/is/my/file.txt');

// Write temp file
$zip->close();

// Stream file to browser
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=myFile.zip');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($temp));

readfile($temp);

unlink($temp);
exit;
于 2012-07-16T19:40:09.573 回答
0

您想要一个扩展来联系您的服务器进行下载吗?这是一个可怕的想法!在本地制作 zipfile - 它不是常规的 javascript,它是一个扩展 - 您拥有完全访问权限。

无论如何,假设您无论如何都想这样做,那么您遇到了什么麻烦?你得到一个 url 列表,将它们发送到你的服务器,你的服务器下载它们,压缩它们并将它们发送给用户。(“你的服务器下载它们”部分应该让你担心!)

你有什么问题?

于 2012-07-16T18:48:27.060 回答