我有一个生成csv格式数据的脚本,该脚本与一组标题一起发送给用户,这些标题告诉浏览器它是.csv文件。当用户(左)单击脚本链接时,一切都很有效,它们会显示一个文件名以.csv结尾的下载对话框,并建议使用excel或calc来打开它。但是,当用户右键单击并选择“另存为”时,将使用php脚本名称保存。
以下是标题代码:
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
$val = date("m_d_Y_g_i");
Header('Content-Disposition: attachment; filename="personal_information_'.$val.'.csv"');
再次,当用户左键单击时,它将文件保存为personal_information_date.csv;当他们右键单击它时保存为download.php。我正在使用FF3。奇怪的是,IE7没有这个问题。
有什么想法吗?
答案 0 :(得分:2)
使用mod_rewrite将文件从file.csv别名为file.php,这是一个浏览器问题,而不是PHP,因为通过保存文件,它在保存之前没有运行它。
总结一下:
personal_information_date.csv
mod_rewrite
规则,将personal_information_date.csv
转发给download.php
(例如:RewriteRule ^personal_information_date.csv$ download.php
)。答案 1 :(得分:1)
HTTP客户端可能会忽略多个内容类型标头,另外两个将被忽略 - 其中哪一个?取决于浏览器实现,因此有不同的行为。正确的mime类型是text / csv,而不是application / octet-stream!内容处置标题对于下载是正确的。
答案 2 :(得分:0)
希望这有帮助。