Php 创建csv文件,不需要';无法使用右键单击“另存为”

Php 创建csv文件,不需要';无法使用右键单击“另存为”,php,Php,我有一个脚本,可以生成csv格式的数据,并将其与一组标题一起发送给用户,告诉浏览器它是一个.csv文件。当用户(左)点击指向脚本的链接时,他们会看到一个文件名以.csv结尾的下载对话框,建议使用excel或calc打开它。但是,当用户右键单击并选择“另存为”时,它将使用php脚本名称保存 以下是标题代码: header("Pragma: public"); header("Expires: 0"); // set expiration time header("Content-Type: ap

我有一个脚本,可以生成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没有这个问题


有什么想法吗?

使用mod_rewrite将文件从file.csv别名为file.php,这是一个浏览器问题,而不是php问题,因为保存文件之前不会运行它

因此,总结如下:

  • 链接到
    personal\u information\u date.csv
  • 创建一个
    mod_rewrite
    规则,将
    个人信息_date.csv
    转发到
    download.php
    (例如:
    RewriteRule^个人信息_date.csv$download.php

  • 使用mod_rewrite将文件从file.csv别名为file.php,这是一个浏览器问题,而不是php问题,因为保存文件之前不会运行它

    因此,总结如下:

  • 链接到
    personal\u information\u date.csv
  • 创建一个
    mod_rewrite
    规则,将
    个人信息_date.csv
    转发到
    download.php
    (例如:
    RewriteRule^个人信息_date.csv$download.php
    • 我认为设置三种不同的mimetype没有帮助
    • 美元是多少?这是已知内容还是用户提供的?例如,它可能包含讨厌的字符(如“),甚至换行符,例如引入新的HTTP头行
    • 查看到达客户端的HTTP头。Firefox内置信息或使用LiveHttpHeaders(可在Mozilla站点找到的插件-记录所有HTTP头)-我确信有更多/其他FF可用插件
    希望这有帮助。

    • 我认为设置三种不同的mimetype没有帮助
    • $val是什么?这是已知的内容还是用户提供的?例如,它可能包含讨厌的字符(如“),甚至换行符,例如引入新的HTTP头行
    • 查看到达客户端的HTTP头。无论是Firefox内置信息还是使用LiveHttpHeaders(可以在Mozilla站点上找到插件-记录所有HTTP头)-我确信还有更多其他插件可供FF使用

    希望这有帮助。

    HTTP客户端可能会忽略多个内容类型头,其他两个将被忽略-哪一个?取决于浏览器实现,因此不同的行为。正确的mime类型是text/csv,而不是application/octet stream!内容处置头对于下载是正确的。

    HTTP客户端可能会忽略多个内容类型头,其他两个将被忽略-哪一个?取决于浏览器实现,因此不同的行为。正确的mime类型是text/csv,而不是application/octet stream!内容配置标题对于下载是正确的。

    我认为内容类型标题用于处理不同的浏览器,但我不能确定。Val设置在最后一行之前:$Val=date(“m_d_Y_g_i”);我发现这有助于解决缓存问题,因为文件名从不相同。我将查看标题,thx for the tip.oops-$val分配对我来说太明显了:)请告诉我们您的结果。我认为内容类型标题用于处理不同的浏览器,但我不能确定。Val设置在最后一行之前:$Val=date(“m_d_Y_g_i”);我发现这有助于解决缓存问题,因为文件名从不相同。我将查看tip.oops的标题,thx-$val分配对我来说太明显了:)请让我们知道您的结果。感谢您对多种mime类型的澄清。。我知道我拥有它们是有原因的。我想你指的是text/csv,不是test/csv,对吧?谢谢你对多种mime类型的解释。。我知道我拥有它们是有原因的。我想你的意思是text/csv——不是test/csv,对吧?让我们知道这是否适合你,因为它假设你正在使用Apache并可以启用mod_rewrite。让我们知道这是否适合你,因为它假设你正在使用Apache并可以启用mod_rewrite