我有代码在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
答案 0 :(得分:-1)
readfile()
返回文件的大小。您可以将@
添加到函数的开头以删除错误报告。 echo @readfile($path);
应仅显示文件名。