pdf、mp3的php文件类型

pdf、mp3的php文件类型,php,file-upload,Php,File Upload,我有一个代码部分,用于检查: ($\u文件[“fileToUpload”][“type”]=“image/gif”|$\u文件[“fileToUpload”][“type”]=“image/jpeg”|$\u文件[“fileToUpload”][“type”]=“image/png”) 我可以用什么替换“image/gif”来过滤pdf和MP3?A包括: 请不要只检查$\u文件['name']['type'],因为发送此信息的是浏览器,伪造信息非常容易,例如向文件中插入代码 为使其更安全,请使用

我有一个代码部分,用于检查:

($\u文件[“fileToUpload”][“type”]=“image/gif”|$\u文件[“fileToUpload”][“type”]=“image/jpeg”|$\u文件[“fileToUpload”][“type”]=“image/png”)

我可以用什么替换“image/gif”来过滤pdf和MP3?

A包括:


请不要只检查
$\u文件['name']['type']
,因为发送此信息的是浏览器,伪造信息非常容易,例如向文件中插入代码

为使其更安全,请使用函数进行MIME类型检查,尤其是mp3文件,它可能仅被识别为
应用程序/octet流

请参阅

您可以编写更易于阅读的代码,如下所示:

$mime_filter = array(
  'image/gif', 'image/jpeg', 'image/png', 
  'application/pdf',
  'audio/mpeg', 'audio/mpeg3', 'audio/x-mpeg', 'audio/x-mpeg-3');

if (in_array($_FILES["fileToUpload"]["type"], $mime_filter)) {
  // ...

这不完全是对你问题的回答,而是一个旁白:

检查
类型
值不会告诉您任何事情。(这里有许多类似的问题,所以答案都指出了这一点——请查看右侧的“相关”侧栏)。浏览器可以配置为发送任何指定文件扩展名的任何内容,因此如果使用此值,实际上就是盲目信任用户输入(错误

最好只是从文件名中提取扩展名,然后用它做你想做的事情

更新:我没料到会被提升太多,但就目前情况而言,我觉得我应该提供更多信息

如果您对仅使用文件扩展名不满意,可以使用usoban所说的
fileinfo
函数来获取文件的MIME类型。不幸的是,这仅在PHP5.3及更高版本上可用

提供了一个更兼容的选项作为解决方案
在这里(虽然我发现给出的答案有点过火,但从任何标准来看都是好的)。

好吧,mime_content_type()函数甚至在PHP5之前就存在了,它提供了与FileInfo extension相同的功能,但已经被弃用(不久前:)+1,因为这是一个完全正确的答案。不过,它可能需要一些扩展。
$mime_filter = array(
  'image/gif', 'image/jpeg', 'image/png', 
  'application/pdf',
  'audio/mpeg', 'audio/mpeg3', 'audio/x-mpeg', 'audio/x-mpeg-3');

if (in_array($_FILES["fileToUpload"]["type"], $mime_filter)) {
  // ...