【发布时间】:2011-10-01 16:38:06
【问题描述】:
我尝试使用php强制下载图片jpg文件,我实现了eth下面的代码:
html
<a href = "filedownload.php?src=uploads/myimage.jpg&download=true>download this file</a>
下载.php
<?php
ob_start();
include_once 'functions.php';
if (isset($_GET['download']) && $_GET['download'] == 'true')
{
$src = sanitizeString($_GET['src']);
header('Content-Description: File Transfer');
header('Content-Type: image/jpeg');
header('Content-Disposition: attachment; filename='.basename($src));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: public');
header('Pragma: public');
}
?>
假设图片的完整路径是“www.example.com/smith/topic/uploads/myimage.jpg”,我得到了正确的图片名称并且也出现了下载窗口,但图片已损坏并且大小为 1KB,任何人都可以告诉我为什么,非常感谢。
【问题讨论】:
-
文件里面有什么?我敢打赌,啤酒里面有一条 PHP 错误消息,解释了出了什么问题。
-
哪个代码?这就是我为那部分所拥有的一切
-
一方面,PHP 脚本的开头有一个空格,这是一个禁忌。您还忘记了在您的 href 末尾添加“”。您甚至在其中打印文件内容吗?PS:我强烈建议您处理这样的文件。潜在攻击的地方太多了。
-
@smith 好吧,您实际上是在哪里输出文件的数据?
-
试试 yo
var_dump(basename($src))并检查这是否是图像的填充路径?!