我有一些PHP代码,可以下载一个zip文件......这个代码是从一个名为 download_file.php 的文件调用的(非常原创,我知道)
相关功能如下:
function download_clientfile() {
if ($this->download_file === FALSE) {
$this->log->log(sprintf("The download file was not generated."), PEAR_LOG_CRIT);
return;
}
$fsize = filesize($this->download_file);
$path_parts = pathinfo($this->download_file);
$ext = strtolower($path_parts["extension"]);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; file='.$path_parts['basename']);
header('Content-Transfer-Encoding: binary');
header('Expires:0');
header("Cache-control: must-revalidate, post-check=0, pre-check=0");
header('Pragma: public');
header('Content-Length: '.filesize($this->download_file));
ob_clean();
flush();
readfile($this->download_file);
exit;
}
问题:下载的文件是预期的zip文件,但下载名称为“download_file.php”
有关如何通过zip文件的名称下载它的任何建议。 感谢
答案 0 :(得分:1)
使用 filename 代替 file :
header('Content-Disposition: attachment; filename='.$path_parts['basename']);
此外,您可能会遇到使用此扩展程序的浏览器。在这种情况下,您可以像这样调用脚本:
download_file.php?file=myfile.zip
或:
download_file.php/myfile.zip
这样,URL以.zip结尾,这会诱使浏览器认为它正在下载ZIP文件。
答案 1 :(得分:0)
尝试将file =更改为filename =
header('Content-Disposition: attachment; filename='.$path_parts['basename']);
答案 2 :(得分:0)
使用
header("Content-Disposition: attachment; filename=\"$filename\"");