想要创建允许用户单击下载所有图像的Web应用程序功能。需要一些指示

时间:2010-12-15 21:30:02

标签: php image download

我正在使用典型的PHP / MySql设置为客户(商业房地产的摄影师)构建自定义应用程序。此应用程序将允许我的客户的客户访问分配给他们的图像,查看和下载它们。

我需要添加选项以允许其客户点击“全部下载 - 打印尺寸质量”和“全部下载 - 网络分辨率”。上传图像后,它们将自动保存在这些单独的分辨率中。为了给您一个想法,将客户通常想要下载的图像相加,最多可达500MB。我认为将所有图像压缩成拉链将是最佳选择。

你如何建议我接近这个,如果你知道任何可能对我有帮助的消息来源?

4 个答案:

答案 0 :(得分:1)

每次下载都不应该动态生成ZIP文件。这将是非常低效的。

上传照片时,请从照片中创建两个新的ZIP文件(每种尺寸一个)。在表中添加两列,指向较小的ZIP,另一列指向较大的列。只需指出你的两个链接。

答案 1 :(得分:1)

您可以使用PHP Zip

示例可以在这里找到:http://www.php.net/manual/en/zip.examples.php

如果您更喜欢脏解决方案,可以使用linux内置tar功能,并与exec结合使用


我认为每张图片应该有3个不同的尺寸,而您的拉链只关注选择具有正确尺寸的图像以添加到存档中。

但是,上面不是问题,你应该说服你的客户更好地下载这些庞大的文件,比如考虑使用ftp程序,或者一些下载工具而不仅仅是通过http超链接(失败的可能性也是如此)高)

答案 2 :(得分:0)

我会说拉链是要走的路。使用PHP动态压缩所选文件,然后让用户自动下载它们。

可能在表单中的图像旁边有一个用户单击复选框,数据被发送到处理页面,该页面为用户扫描ZIP文件。

这可能有助于http://davidwalsh.name/create-zip-php

答案 3 :(得分:0)

使用ZipArchive,将其存储到临时文件然后输出:

$path = '/path/to/your/images';

// search for files matching *.png; *.gif; *.jpg
$files = glob($path.'/*.{png,gif,jpg}', GLOB_BRACE);

// create temporary filename
$tmp = tempnam(sys_get_temp_dir(), 'images');

// create zip
$zip = new ZipArchive;
$zip->open($tmp, ZIPARCHIVE::CREATE);
foreach ($files as $file) {
    // may want to manipulate $file to remove the directory prefix
    $zip->addFile($file);
}
$zip->close();

// output as an attachment
header('Content-Type: application/zip');
header('Content-Disposition: attachment;filename=foo.zip');
readfile($tmp);

当然,如果你真的有500MB的图像,这需要一段时间。你可能最好提前压缩文件(cron或每次上传)。