php sendfile将filesize附加到文件

时间:2015-06-02 19:33:22

标签: php download

我有代码在PHP中提供所请求的文件。它测试代码,因此输入未经过验证。 (顺便说一句,如何正确消毒这种输入...)

$upload_dir = "/media/usb/dir";
$filename = $_GET['filename'];
$mimetype = $_GET['mime'];
$path = $upload_dir . $filename;
header('Content-Description: File Transfer');
header("Content-Type: ".$mimetype );
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
header("X-Sendfile: \"$path\"");
echo readfile($path);

但是文件的大小(以字节为单位)会附加到每个文件中。 例如这样的简单txt:

myfile

将成为这个:

myfile6

如何摆脱这种行为?

我得到这样的文本文件:

download.php?mime=text/plain&filename=my-file.txt

1 个答案:

答案 0 :(得分:-1)

readfile()返回文件的大小。您可以将@添加到函数的开头以删除错误报告。 echo @readfile($path);应仅显示文件名。