我的服务器上有一个CSV文件。如果用户点击了本应下载的链接,但它却在我的浏览器窗口中打开。
我的代码如下所示
<a href="files/csv/example/example.csv">
Click here to download an example of the "CSV" file
</a>
这是一个普通的work服务器,我所有的开发工作都在它上面。
我试过这样的方法:
<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文件。它会创建一个新文件。
发布于 2009-09-23 12:09:02
.htaccess解决方案
要暴力强制下载服务器上的所有CSV文件,请添加您的.htaccess文件:
AddType application/octet-stream csv
PHP解决方案
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=example.csv');
header('Pragma: no-cache');
readfile("/path/to/yourfile.csv");
发布于 2014-02-12 23:51:07
或者,您可以使用HTML5来完成此操作。简单地使用
<a href="example.csv" download>download not open it</a>
发布于 2009-11-03 22:26:55
这里有一个更安全的浏览器解决方案:
$fp = @fopen($yourfile, 'rb');
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
{
header('Content-Type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourname.file"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".filesize($yourfile));
}
else
{
header('Content-Type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourname.file"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".filesize($yourfile));
}
fpassthru($fp);
fclose($fp);
https://stackoverflow.com/questions/1465573
复制相似问题