2013-03-06 104 views
2

在我的网上我想要有两个按钮 - 第一个Download,应该下载PDF到用户的计算机和另一个View,打开PDF在一个新的选项卡。事情是,我不知道如何制作Download按钮。你可能会说它是无用的,因为你可以在“查看”它后保存pdf,但是我已经制作了这样的图形,并且不想改变它。是否有可能阻止浏览器打开PDF文件并使其下载文件?强制浏览器下载文件,而不是查看它

回答

3

您需要强制文件下载在你的服务器端脚本:

这里是一个PHP例子:

$file = "path/to/my-file.pdf"; 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$file"); 
header("Content-Type: application/pdf"); 
header("Content-Transfer-Encoding: binary"); 
+1

很酷,你能否明确告诉我哪一行导致行为改变? – clime 2013-03-06 12:07:34

+0

没有特定的行导致查看pdf文件。如果浏览器识别出您正在访问的文件的类型,那么它会自动尝试显示它,如果它不知道它是什么文件,那么它会要求您下载。使用我提供给你的这些代码行,强制下载并且浏览器不会尝试显示文件。 – 2013-03-06 12:32:46

+4

Matei; HTTP中没有Content-Transfer-Encoding标头字段。此外,内容描述只是噪音。最后,需要引用使用正斜杠的文件名(请参阅RFC 6266),但UA无论如何都会丢弃路径信息,所以在首先发送它时没有意义。 clime:相关标题字段是Content-Disposition。 – 2013-03-06 22:22:55

0

最后,因为我使用nginx的,我决定来解决这个位于http服务器级别:

location /media { 
    alias /srv/www/novacek/media/; 
} 

location /download/media { 
    alias /srv/www/novacek/media/; 
    add_header Content-Disposition "attachment"; 
} 
相关问题