如何创建触发文件下载的链接?

时间:2009-10-02 11:47:32

标签: php javascript file download

当用户点击“下载PDF”链接时,我希望显示下载提示,并且用户可以下载该文件。

目前,用户只是转移到PDF文件的地址。

例如:

<a..[what goes here??]..>Download PDF</a>

似乎有JavaScript和&amp;组合。 PHP需要这样做。

有人能举个例子吗?

7 个答案:

答案 0 :(得分:7)

使用此代码重定向到PHP页面:

<?php
header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('movie.mpg');
?>

您的<a href代码需要指向特定页面,readfile将调用您的资源

Further reading

正如旁注,我同意你不应该覆盖浏览器设置,但有时当老板问你时,你只需要这样做。

答案 1 :(得分:6)

如果您使用的是Apache,可以将其放入.htaccess:

<Files *.pdf>
  Header set Content-Disposition attachment
</Files>

这将发送所有PDF文档作为下载。必须启用mod_headers

答案 2 :(得分:3)

You can also use the following code:

<?php 
$file = filter_input(INPUT_GET, 'file');
$filename = basename($file);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"{$filename}\";");
readfile("your file path {$file}");
?>

这将提示任何文件扩展名,如(.pdf,.docx,.zip,.csv,.txt,.html,.php等等......),而无需直接打开新浏览器。

答案 3 :(得分:1)

您可以通过向Web服务器响应添加HTTP标头来强制浏览器保存链接的内容:

Content-Disposition: attachment; filename=<default filename to save as>

另一方面,我并没有真正看到覆盖用户浏览器配置的重点,这通常会告诉我们默认情况下应该在浏览器中打开PDF文档,在单独的PDF查看器中打开还是保存到磁盘。

答案 4 :(得分:1)

您可以在标记上使用HTML5 download属性。

<a href="http://love4cats.com/kitten-catalogue.pdf" download>Download the CATalogue</a>

您应该检查分析并确保目标浏览器支持该属性。有关浏览器支持,请参阅caniuse.com entry页面。

答案 5 :(得分:0)

目前尚不清楚你的意思

  

目前,用户只是转移到PDF文件的地址。

但我建议采用一种简单的方法:

<a href='http://example.com/download.pdf'>Download PDF</a>

选择下载打开文件更像是浏览器的设置。

答案 6 :(得分:0)

我不相信你的问题有一个神奇的javascript / PHP解决方案,即香草HTML:

<a href="docco.pdf" title="this is a link to a pdf">download the PDF</a>

将执行所需的操作,它将指示浏览器请求资源“docco.pdf”,由浏览器(以及任何插件)来做这件事。

例如,有一个firefox插件“PDF download”,它为用户提供了如何处理弹出窗口的选择。

相关问题