【问题标题】:How to use the CSV MIME-type?如何使用 CSV MIME 类型?
【发布时间】:2010-09-28 17:36:57
【问题描述】:

在我正在开发的 Web 应用程序中,用户可以单击指向 CSV 文件的链接。没有为 mime 类型设置标题,因此浏览器只是将其呈现为文本。我希望将此文件作为 .csv 文件发送,以便用户可以直接使用 calc、excel、gnumeric 等打开它。

header('Content-Type: text/csv');
echo "cell 1, cell 2";

此代码在我的计算机上按预期工作(不是一直都是这样吗?)但在另一台计算机上不起作用。

我的浏览器是 FF 3.0.1(在 linux 上)的夜间版本。无法使用的浏览器是 IE 7 和 FF 3.0(在 windows 上)

有什么我不知道的怪癖吗?

【问题讨论】:

    标签: php csv http-headers mime


    【解决方案1】:

    您可以尝试通过执行以下操作来强制浏览器打开“另存为...”对话框:

    header('Content-type: text/csv');
    header('Content-disposition: attachment;filename=MyVerySpecial.csv');
    echo "cell 1, cell 2";
    

    这应该适用于大多数主要浏览器。

    【讨论】:

      【解决方案2】:

      您没有指定语言或框架,但以下标头用于文件下载:

      "Content-Disposition: attachment; filename=abc.csv"
      

      【讨论】:

        【解决方案3】:

        使用 Internet Explorer,您通常还必须指定 Pragma: public 标头才能正常下载。

        header('Pragma: public');
        

        只要我的 2 美分..

        【讨论】:

        • Pragma: public 对于 Internet Explorer 没有任何意义。 (我在有问题的组件上工作,并且找到了源代码)。
        • 可能它的实际用途是替换一个预先存在的 Pragma: no-cache header?
        【解决方案4】:

        此代码可用于导出任何文件,包括 csv

        // application/octet-stream tells the browser not to try to interpret the file
        header('Content-type: application/octet-stream');
        header('Content-Length: ' . filesize($data));
        header('Content-Disposition: attachment; filename="export.csv"');
        

        【讨论】:

        • “octetstream”的意思是“octet-stream”
        • 这可能会在某些浏览器中导致警告:资源解释为 Document 但使用 MIME 类型 application/octet-stream 传输
        猜你喜欢
        • 2013-05-24
        • 2014-09-20
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-16
        • 2023-04-08
        相关资源
        最近更新 更多