这是我正在使用的代码。正如建议的那样,我添加了内容类型和处置的标题。
<?php
header('Content-Disposition: attachment');
header('Content-Type: application/octet-stream');
$con = mysql_connect("localhost","root","admin");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("acl_cake", $con);
$result = mysql_query("select * from attachments");
while($row = mysql_fetch_array($result))
{
echo '<a href="'.$row[2].'" target="_blank">Download</a>--'.$row[3].'<br>';
}
mysql_close($con);
?>
在添加标题之前,我会在网页上提供一些链接。每当我点击其中一个时,就会打开一个新页面,该文件中的内容将显示在新页面中。
现在添加标题后,每当我加载页面时,都会弹出一个弹出窗口,要求我下载我的表单而不是文件。
如果我有content-disposition:attachment; filename='file.txt'
,那么在页面加载时会弹出一个下载文件“file.txt”,并且没有任何链接显示在网页上。
我不确定自己是否犯了错误。
我不确定我是否在标题上犯了错误。
答案 0 :(得分:3)
您需要发送内容处置标头以强制下载
header("Content-Disposition: attachment; filename=\"my.file\"");
还明确设置内容类型:
header('Content-Type: application/octet-stream');
答案 1 :(得分:1)
添加标题Content-Disposition: attachment
。见http://apptools.com/phptools/force-download.php
答案 2 :(得分:0)
如果我理解你的话,你不应该给你的用户一个下载文本文件的链接。如果是这样,您可以通过为此文件设置application/octet-stream
- 标头(例如使用php)来完成此操作。
注意:在大多数情况下,我认为你不应该这样做。用户不会选择如何处理浏览器可以打开的文件,如果用户不想下载这些文件,那么他可以轻松地将浏览器配置为这个或那个。