php文件类型为pdf,mp3

Sha*_*awn 2 php file-upload

我有一个代码部分,检查是否:

($_FILES["fileToUpload"]["type"] == "image/gif" || $_FILES["fileToUpload"]["type"] == "image/jpeg" || $_FILES["fileToUpload"]["type"] == "image/png")

有什么可以替代'image/gif'它来过滤pdf和mp3?

Cze*_*ogy 5

请参阅MIME 类型列表

您可以像这样编写更易于阅读的代码:

$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)) {
  // ...
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 5

不完全是你的问题的答案,而是一个旁边:

检查该type值并不会告诉您任何事情.这个值是由浏览器产生并由PHP在服务器端没有被选中(这里很多类似的问题,于是纷纷指出这一点的答案-检查右侧的"相关"边栏).浏览器可以配置为根据任何指定的文件扩展名发送任何内容,因此如果使用此值,则实际上是盲目信任用户输入(错误).

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

更新:我没想到会被投票太多,但事实上我认为我应该提供更多信息.

如果你不适合使用文件扩展名,你可以使用fileinfousoban所说的函数来获取文件的MIME类型.不幸的是,这只适用于PHP 5.3及更高版本.

一个更兼容的选项作为如何获取PHP中的文件的内容类型的答案 在这里SO(虽然我发现答案显得有些过分,但任何标准都很好).