如何在IE上下载csv文件?适用于Firefox

tau*_*ino 34 php csv internet-explorer download

我正在努力解决一个奇怪的错误.我有一个简单的Web应用程序,从数据库中抓取东西,然后将其输出为可下载的csv文件.它适用于firefox和chrome,但IE无法将其识别为csv文件(认为它是一个html文件),当我点击保存时,我收到错误,"无法从{site of site}下载{name of file} .无法打开这个网站...."

码:

session_start();

//some logic goes here...  

//generate csv header  
header("Content-type: application/octet-stream");  
header("Content-Disposition: attachment; filename=exportevent.csv");  
header("Pragma: no-cache");  
header("Expires: 0");  

echo "Event: " . $event_title . "\n";  

//print the column names  
echo "Last Name, First Name, Company \n";  

while($row = mysql_fetch_assoc($result))  
{  
    echo $row['atlname'] . ',' . $row['atfname'] . ',' . $row['atcompany'] . "\n";      
}
Run Code Online (Sandbox Code Playgroud)

我已经玩了很多内容类型,但这没有任何效果.

更新:我已经尝试过text/csv,application/vnd.ms-excel(及其变体),text/plain以及其他一些我现在忘记运气的东西.

这是IE8顺便说一句.

更新2:连接通过SSL.

小智 56

我们不爱IE吗?:)

尝试使用这些标题:

  header("Pragma: public");
  header("Expires: 0");
  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  header("Cache-Control: private",false);
  header("Content-Type: application/octet-stream");
  header("Content-Disposition: attachment; filename=\"exportevent.csv\";" );
  header("Content-Transfer-Encoding: binary"); 
Run Code Online (Sandbox Code Playgroud)

我认为八位字节流内容类型强制IE下载文件.

  • <sarcasm>哦是的IE我喜欢它</ sarcasm> (5认同)
  • 我发现FF 3.6和IE 8的最小标题是:header("Cache-Control:must-revalidate,post-check = 0,pre-check = 0"); header("Content-type:application/octet-stream"); header("Content-Disposition:attachment; filename = \"".$ filename."\""); (2认同)

jas*_*bar 6

我们最近遇到了这个问题.请参阅此MSKB文章

这些是我们最终必须使用它来使其在SSL上工作的标头.

header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$file_name\";");
header("Content-length: " . strlen($csv_string));
Run Code Online (Sandbox Code Playgroud)