PHP文件上载中支持的文件类型有哪些?

时间:2012-01-16 05:18:59

标签: php file-upload file-type

php文件上传支持哪些文件类型?

   Choose a file to upload: <input name="uploadedfile" type="file" />
   <br />
      Username:<input type="text" name="username">
   <br />
      Password:<input type="text" name="password">
   <br />
      FaxNumber:<input type="text" name="faxnumber">

   <input type="submit" value="Upload File" />

7 个答案:

答案 0 :(得分:3)

PHP并不限制此类内容。文件始终只是数据。当PHP“发布”(或上传)到您的服务器时,PHP会为您提供这些数据。它没有看它确定它是什么数据,它只是说“这个数据被上传,这里是临时文件的路径。”只要您的服务器可以处理接收整个文件,PHP就可以接受任何内容。是否要限制可以上传的类型完全取决于您。

答案 1 :(得分:1)

客户端没有限制,支持所有文件/类型。 PHP也没有内置限制并支持所有文件。如果你想限制可以在php中上传的内容,它看起来像下面的片段,它将文件限制为gif图像:

if ($_FILES["file"]["type"] == "image/gif"){
    //do stuff here
}
else{
    //the file was wrong type handle error here
}

您可以在上面的代码中找到MIME类型列表“image / gif”:  http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types

答案 2 :(得分:1)

也许你需要这个: http://en.wikipedia.org/wiki/Internet_media_type

默认情况下,文件类型没有限制,直到您指定限制为止。

上传文件的文件类型可通过以下方式获取:

$_FILES['yourFileName']['type']

答案 3 :(得分:0)

by default: nearly anything you want (pdf,txt,exe,jpg) etc.

您的工作是过滤掉您希望使用的任何内容。 你可以过滤$ _FILES数组(类型,大小)等中的任何内容

答案 4 :(得分:0)

PHP将支持文件上传的所有文件类型,但您必须验证可能破坏您网站的某些文件扩展名,并且您还必须考虑文件大小以避免长时间运行脚本。

答案 5 :(得分:0)

PHP无法处理上传。 http规范支持上传,应由您的Web服务(Apache,IIS等)处理。

无论如何,如果您只想保存上传的文件,那么所有文件类型都可以正常工作。如果你想把上传的文件作为输入进行处理,事情会变得更加毛茸茸。

答案 6 :(得分:0)

您可以上传任何文件,php对此没有限制。您需要自己做限制。

有关客户端文件格式限制,请参阅此Limit file format when using ?

<input type="file" accept="image/*" /> <!-- all image types --> 
<input type="file" accept="audio/*" /> <!-- all audio types --> 

对于服务器,您可以按此过滤上传的文件

if(in_array(mime_type($file_path),$allowed_mime_types)){
    // save the file
}

$allowed_mime_types = array(
        'image/jpeg',
        'image/jpg',
        'image/png',
        'image/gif',
        'video/mp4'
);


/*
For PHP>=5.3.0, you can use php's `finfo_file`([finfo_file](https://www.php.net/manual/en/function.finfo-file.php)) function to get the file infomation about the file.

For PHP<5.3.0, you can use your's system's `file` command to get the file information.
*/
function mime_type($file_path)
{
    if (function_exists('finfo_open')) {            
        $finfo = new finfo(FILEINFO_MIME_TYPE, null);
        $mime_type = $finfo->file($file_path);
    }
    if (!$mime_type && function_exists('passthru') && function_exists('escapeshellarg')) {
        ob_start();
        passthru(sprintf('file -b --mime %s 2>/dev/null', escapeshellarg($file_path)), $return);
        if ($return > 0) {
            ob_end_clean();
            $mime_type = null;
        }
        $type = trim(ob_get_clean());
        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\.]+)#i', $type, $match)) {
            $mime_type = null;
        }
        $mime_type = $match[1];
    }
    return $mime_type;
}