2012-01-11 86 views
0

我的网站上我想让人们上传吉他专业文件。显然没有特定的MIME类型(我测试过,它给了我'application/octet-stream')。有没有办法检查和100%确定文件是吉他专业文件,而不是别的? 感谢吉他pro文件的MIME类型?

+0

确实每个文件都有一个特定的标题可以检查?用十六进制编辑器检查其中的几个。 – jValdron 2012-01-11 19:44:10

+0

阅读标题字符串,并测试它是否匹配(正则表达式在这里最好)。如果没有达成一致的MIME类型,则无法对其进行测试。 (还有那些上传不可靠)。如果你想用一些有用的东西来为你的下载提供服务,请设置'audio/x-guitar-pro'类型的东西,而不是无用的'application/*' – mario 2012-01-11 19:44:40

回答

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文件。我也用来检查文件扩展名。 但是请记住,您不能执行真正的检查来过滤恶意上传,因为伪造第一个字节以及扩展非常容易。所以应该总是对所有上传的文件进行一些额外的调整。

0

您应该分析该文件,看看版本字符串是正确的:

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

谢谢,我对php很新,我该怎么做?这只是为了gp4文件,对于其他版本有没有相同的内容? – romainberger 2012-01-11 19:45:24