这个应该很简单,我想。我有一个分页的图库,在每张图片下面都有一个小链接,上面写着“下载Comp”。这应该允许人们快速地将带有PHP生成水印的.jpg文件下载到他们的计算机上。
现在,我知道我可以直接链接到.jpg文件,但这需要用户在新窗口中打开图像,右键单击,保存为...等等。相反,我希望“下载Comp”链接立即启动文件的下载。
PHP.net似乎建议使用readfile(),因此每个“下载Comp”链接都被回显为“?download=true&g={$gallery}&i={$image}”。
然后在页面顶部,我捕获看看$_GET['download']变量是否设置,如果是,我运行以下代码:
链接加载时间很长,然后弹出一个提示对话框,询问是否“打开”或“保存”文件,但是一旦您保存并尝试打开该文件,它会显示文件已损坏,无法打开。
有什么想法吗?
现在,我知道我可以直接链接到.jpg文件,但这需要用户在新窗口中打开图像,右键单击,保存为...等等。相反,我希望“下载Comp”链接立即启动文件的下载。
PHP.net似乎建议使用readfile(),因此每个“下载Comp”链接都被回显为“?download=true&g={$gallery}&i={$image}”。
然后在页面顶部,我捕获看看$_GET['download']变量是否设置,如果是,我运行以下代码:
if(isset($_GET['download'])) {
$gallery = $_GET['g'];
$image = $_GET['i'];
$file = "../watermark.php?src={$gallery}/images/{$image}";
header('Content-Description: File Transfer');
header('Content-Type: application/jpeg');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: public');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
链接加载时间很长,然后弹出一个提示对话框,询问是否“打开”或“保存”文件,但是一旦您保存并尝试打开该文件,它会显示文件已损坏,无法打开。
有什么想法吗?
fopen_wrappers
?否则,readfile
无法接受 URL 参数。 - Ken Keenan