当“在浏览器中显示PDF”选项未选中时,是否有一种方法强制PDF文件在浏览器中打开?
我尝试使用嵌入标签和一个iframe,但它只有当该选项被选中时才会工作。
我该怎么办?
当“在浏览器中显示PDF”选项未选中时,是否有一种方法强制PDF文件在浏览器中打开?
我尝试使用嵌入标签和一个iframe,但它只有当该选项被选中时才会工作。
我该怎么办?
当前回答
对于大文件,你需要让你的输出缓冲区开始添加
ob_start ();//在开始
. ./ /你的代码
Ob_clean();//在文件的末尾
其他回答
正确的格式是application/pdf,而不是application/force-download。这看起来像是对一些传统浏览器的黑客攻击。如果可以,总是使用正确的mimetype。
如果你可以控制服务器代码:
强制下载/提示:使用头(“Content-Disposition”,“附件;文件名= myfilename.myextension "); 浏览器尝试打开它:使用头("Content-Disposition", "inline;文件名= myfilename.myextension ");
无法控制服务器代码:
使用HTML5下载属性。它使用在视图端指定的自定义文件名。
注意:我更喜欢在服务器端设置文件名,因为您可能有更多的信息,可以使用公共代码。
为了向浏览器表明文件应该在浏览器中查看,HTTP响应应该包括这些头文件:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
下载而不是查看文件:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
如果文件名包含特殊字符(如文件名[1].pdf),则文件名周围的引号是必需的,否则可能破坏浏览器处理响应的能力。
如何设置HTTP响应标头取决于您的HTTP服务器(或者,如果您从服务器端代码生成PDF响应,则需要使用服务器端编程语言)。
我也有同样的问题,上面的大部分答案应该可以解决你的问题。不幸的是,即使我在响应中收到了内容类型和内容处理标题,但我的pdf仍然是被下载而不是被查看。经过几个小时的头脑风暴和尝试。
罪魁祸首是火狐,在某种程度上是我。紧张的笑声
默认情况下,当你在firefox中打开一个pdf文件时,它会弹出一个窗口,让你保存pdf文件或直接打开它,还有一个复选框告诉你从现在开始自动执行这个操作,猜猜是谁选择了它。
由于这个错误,我的pdf文件被下载而不是被查看,即使有所有必要的标题响应。这是一个简单的错误,但却花费了我大量的时间。
要解决这个问题,只需进入设置,搜索应用程序,并将pdf设置更改为您需要的任何设置。
如果你有Apache,把这个添加到。htaccess文件中:
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
对于大文件,你需要让你的输出缓冲区开始添加
ob_start ();//在开始
. ./ /你的代码
Ob_clean();//在文件的末尾