我有一个代码部分,检查是否:
($_FILES["fileToUpload"]["type"] == "image/gif" || $_FILES["fileToUpload"]["type"] == "image/jpeg" || $_FILES["fileToUpload"]["type"] == "image/png")
有什么可以替代'image/gif'它来过滤pdf和mp3?
请参阅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)
不完全是你的问题的答案,而是一个旁边:
检查该type值并不会告诉您任何事情.这个值是由浏览器产生并由PHP在服务器端没有被选中(这里很多类似的问题,于是纷纷指出这一点的答案-检查右侧的"相关"边栏).浏览器可以配置为根据任何指定的文件扩展名发送任何内容,因此如果使用此值,则实际上是盲目信任用户输入(错误).
最好从文件名中提取扩展名,然后用它做你想做的事情.
更新:我没想到会被投票太多,但事实上我认为我应该提供更多信息.
如果你不适合使用文件扩展名,你可以使用fileinfousoban所说的函数来获取文件的MIME类型.不幸的是,这只适用于PHP 5.3及更高版本.
一个更兼容的选项作为如何获取PHP中的文件的内容类型的答案 ?在这里SO(虽然我发现答案显得有些过分,但任何标准都很好).
| 归档时间: |
|
| 查看次数: |
15237 次 |
| 最近记录: |