我试图以新名称(new_name)强制下载我的php程序中的文件。我正在更改文件名,但保持扩展名与roginal文件相同。这是我的代码的一部分:
$original_filename = "attachments/20180315.log";
$new_filename = "new_name." . pathinfo($original_filename, PATHINFO_EXTENSION);
header("Content-Length: " . filesize($original_filename));
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="' . $new_filename . '"');
header('Pragma: no-cache');
readfile($original_filename);
exit;
当我下载文本文件时,我的下载工作正常(例如,在20180315.log上面的示例是文本文件)。当我尝试使用二进制文件(例如pdf)执行相同操作时,我得到一个空的new_name.pdf。
有什么建议吗?
答案 0 :(得分:0)
我总是发现确切的标题需要有点凌乱并且依赖于浏览器,有很多选项,你会看到很多变化,所以我建议如下,但你可能需要只需测试一些组合,直到你做对了,我建议你确保在尽可能多的浏览器上测试它。
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . $new_filename . "\"");
readfile($original_filename);