【问题标题】:do I really need to specify the php head content-type?我真的需要指定 php 头内容类型吗?
【发布时间】:2012-11-15 09:03:23
【问题描述】:

我的服务器上有.mp3和.pcm两种音频格式,当我不知道用户请求的类型时,我应该如何设置php header content-type?

【问题讨论】:

  • 你怎么不知道用户请求的类型是什么?
  • 我知道,但是在我的系统中,用户的请求不包含音频格式信息,我需要从数据库中检索该信息,所以我正在寻找是否有简单的方法。

标签: php header content-type


【解决方案1】:

是的,您必须......您可以使用mime_content_type 来检测文件的 MIME 内容类型,从而简化标题中的流程

例子

header(sprintf('Content-type: %s',mime_content_type($filename)));

【讨论】:

  • 为什么不使用简单的字符串连接? header('Content-type: .mime_content_type($filename));
【解决方案2】:

我猜你可以对任何类型的二进制文件格式使用“Application/octet-stream”。

【讨论】:

    【解决方案3】:

    当您说设置标题时,我认为您将 .mp3.pcm 重写为 PHP 脚本。

    在这种情况下,您应该使用文件扩展名重写它。然后您可以检查 $_GET 变量中的扩展名。

    if(strpos('.mp3', $_GET['filename']) !== false) {
       header('Content-Disposition: inline;filename="test.mp3"');
    }
    
    if(strpos('.pcm', $_GET['filename']) !== false) {
       header("Content-type: application/octet-stream;");
    }
    

    PCM 数据是 RAW-Data,所以我认为您可以使用 octet-stream 或 Baba 的酷解决方案

    所以你可以检查它是哪种格式并为指定的文件设置标题。

    这是另一个关于这个问题的帖子: Output mp3 with php

    【讨论】:

    • 如果$_GET['filename'] = "a.mp3.pcm"怎么办?
    【解决方案4】:

    在我的网站中,我使用了这种类型的标题。我推荐这个。

    例子

    header("content-type:text/xml;charset=utf-8;charset=windows-1256");

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 1970-01-01
      • 2011-04-23
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2020-05-01
      • 1970-01-01
      相关资源
      最近更新 更多