当“在浏览器中显示PDF”选项未选中时,是否有一种方法强制PDF文件在浏览器中打开?
我尝试使用嵌入标签和一个iframe,但它只有当该选项被选中时才会工作。
我该怎么办?
当“在浏览器中显示PDF”选项未选中时,是否有一种方法强制PDF文件在浏览器中打开?
我尝试使用嵌入标签和一个iframe,但它只有当该选项被选中时才会工作。
我该怎么办?
当前回答
如果你链接到一个。pdf文件,它会在浏览器中打开。 如果该框未选中,它应该链接到一个。zip以强制下载。
如果.zip文件不是一个选项,那么使用PHP中的头文件强制下载
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
其他回答
为了向浏览器表明文件应该在浏览器中查看,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文件,它会在浏览器中打开。 如果该框未选中,它应该链接到一个。zip以强制下载。
如果.zip文件不是一个选项,那么使用PHP中的头文件强制下载
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
下面是在PHP中强制在浏览器中查看文件的另一种方法:
$extension = pathinfo($file_name, PATHINFO_EXTENSION);
$url = 'uploads/'.$file_name;
echo '<html>'
.header('Content-Type: application/'.$extension).'<br>'
.header('Content-Disposition: inline; filename="'.$file_name.'"').'<br>'
.'<body>'
.'<object style="overflow: hidden; height: 100%;
width: 100%; position: absolute;" height="100%" width="100%" data="'.$url.'" type="application/'.$extension.'">
<embed src="'.$url.'" type="application/'.$extension.'" />
</object>'
.'</body>'
. '</html>';
如果你有Apache,把这个添加到。htaccess文件中:
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
对于大文件,你需要让你的输出缓冲区开始添加
ob_start ();//在开始
. ./ /你的代码
Ob_clean();//在文件的末尾