MIME 类型的吉他专业文件?
Posted
技术标签:
【中文标题】MIME 类型的吉他专业文件?【英文标题】:MIME type of guitar pro files? 【发布时间】:2012-02-08 04:17:52 【问题描述】:我想在我的网站上允许人们上传吉他专业文件。显然这些没有特定的 MIME 类型(我测试过,它给了我“应用程序/八位字节流”)。有没有办法检查并 100% 确定文件是吉他专业文件而不是其他文件? 谢谢
【问题讨论】:
每个文件上肯定有一个特定的标题可以检查吗?使用十六进制编辑器检查其中的几个。 读入标题字符串并测试它是否匹配(这里最好使用正则表达式)。如果没有约定的 MIME 类型,则不能针对它进行测试。 (这些对于上传也不可靠)。如果您想为您的下载提供有用的东西,请设置类型audio/x-guitar-pro
或其他东西,而不是无用的application/*
【参考方案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文件,其他版本有同样的吗?以上是关于MIME 类型的吉他专业文件?的主要内容,如果未能解决你的问题,请参考以下文章