猿问

强制使用PHP下载文件

强制使用PHP下载文件

我的服务器上有个CSV文件。如果一个用户点击一个链接,它应该下载,但相反,它打开在我的浏览器窗口。

我的代码如下所示

<a href="files/csv/example/example.csv">
    Click here to download an example of the "CSV" file</a>

这是一个普通的Web服务器,在这里我有我所有的开发工作。

我试过这样的方法:

<a href="files/csv/example/csv.php">
    Click here to download an example of the "CSV" file</a>

现在我的内容csv.php档案:

header('Content-Type: application/csv');header('Content-Disposition: attachment; filename=example.csv');header('Pragma: no-cache');

现在我的问题是它正在下载,而不是我的CSV文件。它创建一个新文件。


PIPIONE
浏览 391回答 3
3回答

一只甜甜圈

或者你可以使用HTML 5来完成这个任务。简单地<a&nbsp;href="example.csv"&nbsp;download>download&nbsp;not&nbsp;open&nbsp;it</a>

大话西游666

这不可能可靠地完成,因为应该由浏览器来决定如何处理它被要求检索的URL。你可以的建议它应该通过发送内容配置头立即提供“保存到磁盘”的浏览器:header("Content-disposition:&nbsp;attachment");我不知道不同的浏览器对此支持得有多好。另一种方法是发送内容类型的应用程序/八进制流,但这是一种黑客攻击(基本上是告诉浏览器“我没有告诉您这是什么类型的文件”,并且取决于大多数浏览器随后将提供下载对话框的事实),并且据称会给InternetExplorer带来问题。在网页创作常见问题。编辑您已经切换到一个PHP文件来传递数据-这是设置内容配置头所必需的(除非有一些神秘的Apache设置也可以这样做)。现在剩下的就是让PHP文件读取CSV文件的内容并打印出来-filename=example.csv在标头中,只向客户端浏览器建议文件使用什么名称,它实际上并不从服务器上的文件中获取数据。
随时随地看视频慕课网APP
我要回答