【问题标题】:MIME type of guitar pro files?MIME 类型的吉他专业文件?
【发布时间】:2012-02-08 04:17:52
【问题描述】:

我想在我的网站上允许人们上传吉他专业文件。显然这些没有特定的 MIME 类型(我测试过,它给了我“应用程序/八位字节流”)。有没有办法检查并 100% 确定文件是吉他专业文件而不是其他文件? 谢谢

【问题讨论】:

  • 每个文件上肯定有一个特定的标题可以检查吗?使用十六进制编辑器检查其中的几个。
  • 读入标题字符串并测试它是否匹配(这里最好使用正则表达式)。如果没有约定的 MIME 类型,则不能针对它进行测试。 (这些对于上传也不可靠)。如果您想为您的下载提供有用的东西,请设置类型audio/x-guitar-pro 或其他东西,而不是无用的application/*

标签: php upload mime guitar


【解决方案1】:

从上传的文件中读取第一个字节。例如,这就是我在创建类似功能时检查上传文件的方式。

$f = fopen($_FILES['tmp_name'], "rb");
fseek($f, 1);
$in = fgets($f, 19);
fclose($f);

if ($in == 'FICHIER GUITAR PRO') { ... }

所以从第 1 到第 19 读取字符会给我字符串“FICHIER GUITAR PRO”。这种方法对我来说适用于 gp4 文件。我也曾经检查文件扩展名。 但是请记住,您无法执行真正的检查来过滤恶意上传,因为伪造第一个字节以及扩展名非常容易。所以应该对所有上传的文件进行一些额外的审核。

【讨论】:

    【解决方案2】:

    您应该解析文件并查看版本字符串是否正确:

    http://dguitar.sourceforge.net/GP4format.html
    

    【讨论】:

    • 谢谢,我对php很陌生,我该怎么做?而且这只是gp4文件,其他版本有同样的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2018-06-27
    • 2019-01-28
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多