繁体   English   中英

使用JavaScript和PHP下载图像文件并返回zip文件

[英]Using JavaScript and PHP to download image files and return a zip file

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

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

我已经完成了大多数扩展功能,但是这一功能让我很沮丧。 任何帮助将不胜感激。

我将如何去做呢?

您是否希望扩展程序与您的服务器联系以进行下载? 这是一个可怕的主意! 在本地制作zip文件-这不是常规的javascript,而是扩展名-您具有完全访问权限。

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

你有什么问题

您可以使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM