PDF下载被单引号包围?

时间:2018-01-10 19:48:31

标签: php internet-explorer pdf firefox download

我在Mozilla或Internet Explorer中设置PDF下载时遇到问题,因为您可能从标题中获得了。如果我出于某种原因试图下载something.pdf,那么它就变成了什么.pdf'在外部使用单引号,这当然使得无法读取,因为它不是有效的文件扩展名。我一直在寻找遇到同样问题的人,并且遇到的实例很少,其中没有一个解决方案对我有用。我很迷茫,并且一直试图想出这一个,所以我在这里。以下是发生下载的代码部分。 PHP变量$ OrderNumber只是一个五位数字,而$ FileNameToDownload是指向PDF位置的整个目录(我已经检查过以确认它没有单引号)。

header('Content-Description: File Transfer');
header('Content-Type: application/zip');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename='$OrderNumber'");
header("Content-Transfer-Encoding: binary ");
header('Content-Length: ' . filesize($FileNameToDownload));
while(ob_get_level()) ob_end_clean();
flush();
readfile($FileNameToDownload);

唯一存在问题的浏览器是Mozilla和IE。在Chrome和Opera中,它似乎完美无缺。任何帮助都会受到赞赏,因为我已经停留了一段时间而没有前进。如果有另一种下载PDF的方法,我对此非常开放,但除了这个之外我发现并尝试的所有方法都给了我安全错误,因为它试图从中提取PDF。非常感谢,如果需要更多详细信息,我很乐意提供,但我尽可能地尽可能彻底。

2 个答案:

答案 0 :(得分:4)

header("Content-Disposition: attachment;filename='$OrderNumber'");

如果您不想在文件名中使用引号,请不要在文件名中加上引号。

Firefox只是在做你要告诉它的事情,而不是假设你犯了错误。

header("Content-Disposition: attachment;filename=$OrderNumber");

除了:

    header('Content-Type: application/zip');
    header("Content-Type: application/force-download");
    header("Content-Type: application/download");

文档只能有一个Content-Type。你为什么要设三个?

无论如何,它们都不正确。你说你在提供PDF:

header('Content-Type: application/pdf');

答案 1 :(得分:0)

当我从在Google Chrome浏览器中打开的页面保存文件时,它会自动在文件名两边加上单引号。例如,在Microsoft Dynamics中,当我生成列表然后导出到Excel时,无论如何都不会出现任何对话框屏幕来更改文件名,因此该文件将保存在指定的下载文件夹中,名称为“ something.xlsx”,因此单击它会给用户带来问题,他/她想使用哪个应用程序打开它。 例如,在IE11中就没有这种问题。