腓允许上传的文件扩展名

问题描述:

可能重复:
How can I only allow certain filetypes on upload in php?腓允许上传的文件扩展名

我学习PHP和MySQL。我想创建一个功能,只允许用户上传的特定文件扩展名。喜欢..

$whitelist = array("jpg","jpeg","gif","png","bmp","pdf"); 

那么如何检查这个具体的文件扩展名与PHP。谁能告诉我请.. 谢谢。

+0

http://php.net/pathinfo – hakre 2012-04-09 08:12:47

这是一个选项:

function checkFormat($source){ 
    $whitelist = array("jpg","jpeg","gif","png","bmp","pdf"); 
    $type=""; 
    if(version_compare('4.3.0', PHP_VERSION) > 0){ 
     $type=mime_content_type($source['tmp_name']); 
    }else{ 
     $type=$source['type']; 
    } 

    return (in_array($type, $whitelist)); 
} 

商祺!

+0

需要说你需要调用'checkFormat($ _ FILES [“fieldname”])' – Stefan 2012-04-09 08:05:31

+0

$ source意味着$ _FILE ['file'] ['tmp_name']; ? – user1295995 2012-04-09 08:06:40

+0

OH!..我明白了.. – user1295995 2012-04-09 08:08:20

获取上传文件的文件扩展名与pathinfo­Docs

$extension = pathinfo($filename, PATHINFO_EXTENSION); 

,然后核对允许exentsions的白名单

$allowedExtensions = array("jpg","jpeg","gif","png","bmp","pdf"); 
$isAllowed = in_array($extension, $allowedExtensions); 

也许你需要修改扩展识别功能得到一些像tar.gz这样的特殊扩展,但这应该能够做到。

编辑:正如说here你不应该检查文件扩展名,但MIME类型。

+1

忘记爆炸,有['pathinfo'](http://php.net/pathinfo); ) – hakre 2012-04-09 08:13:36

+0

hakre:你是男人! :)我的方法是相当“快速和肮脏”;) – Stefan 2012-04-09 08:19:31

看看这里: http://www.w3schools.com/php/php_file_upload.asp

它提供了展示如何做到这一点的例子。

+0

Obligatory http://w3fools.com/ – dtech 2012-04-09 08:11:11