Home  >  Article  >  Backend Development  >  PHP file upload example (with file type restrictions)_PHP tutorial

PHP file upload example (with file type restrictions)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:48:49900browse

This file upload implementation can be used in the development of example applications, because it has better security restrictions. Of course, you can also obtain and judge the type of uploaded image files.


Today, we improved the file uploading system of several of our websites, so I can post something by the way.

Full php code, no js, ​​the file type is judged based on the suffix name, not mime.

Create a new up.php with the following code:

The code is as follows
 代码如下 复制代码
$uptype=array("jar","zip");
//允许上传文件类型
$max_file_size=20480000; //上传文件大小限制, 单位BYTE
$path_parts=pathinfo($_SERVER['PHP_SELF']); //取得当前路径
$destination_folder="files/";
//上传文件路径
$name="MuXi_".date("Y-m-d_H-i-s");
//保存文件名
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$file = $_FILES["upload_file"];
if(!is_uploaded_file($file["tmp_name"]))
//是否存在文件
{
echo "文件不存在!";
exit;
}
$torrent = explode(".", $file["name"]);
$fileend = end($torrent);
$fileend = strtolower($fileend);
if(!in_array($fileend, $uptype))
//检查上传文件类型
{
echo"不允许上传此类型文件!";
exit;
}
if($max_file_size < $file["size"])
//检查文件大小
{
echo "文件太大,超过上传限制!";
exit;
}
if(!file_exists($destination_folder))
mkdir($destination_folder);
$filename=$file["tmp_name"];
$image_size = getimagesize($filename);
$pinfo=pathinfo($file["name"]);
$ftype=$pinfo[extension];
$destination = $destination_folder.$name.".".$ftype;
if(file_exists($destination) && $overwrite != true)
{
echo "同名文件已经存在了!";
exit;
}
if(!move_uploaded_file ($filename, $destination))
{
echo "移动文件出错!";
exit;
}
$pinfo=pathinfo($destination);
$fname=$pinfo[basename];
echo "上传成功!";
}
?>
Copy code

代码如下 复制代码




$uptype=array("jar","zip");

//Allow upload file types

$max_file_size=20480000; //Upload file size limit, unit BYTE $path_parts=pathinfo($_SERVER['PHP_SELF']); //Get the current path $destination_folder="files/"; //Upload file path $name="MuXi_".date("Y-m-d_H-i-s");

//Save file name

if($_SERVER['REQUEST_METHOD'] == 'POST') $file = $_FILES["upload_file"]; if(!is_uploaded_file($file["tmp_name"])) //Whether the file exists { echo "File does not exist!"; exit; } $torrent = explode(".", $file["name"]); $fileend = end($torrent); $fileend = strtolower($fileend); if(!in_array($fileend, $uptype))
//Check upload file type { echo "Uploading files of this type is not allowed!";
exit;
} if($max_file_size < $file["size"]) <🎜> //Check file size <🎜> { <🎜> echo "The file is too large and exceeds the upload limit!"; <🎜> exit; <🎜> } <🎜> if(!file_exists($destination_folder)) <🎜> mkdir($destination_folder); <🎜> $filename=$file["tmp_name"]; <🎜> $image_size = getimagesize($filename); <🎜> $pinfo=pathinfo($file["name"]); <🎜> $ftype=$pinfo[extension]; <🎜> $destination = $destination_folder.$name.".".$ftype; <🎜> if(file_exists($destination) && $overwrite != true) <🎜> { <🎜> echo "The file with the same name already exists!"; <🎜> exit; <🎜> } <🎜> if(!move_uploaded_file ($filename, $destination)) <🎜> { <🎜> echo "Error moving file!"; <🎜> exit; <🎜> } <🎜> $pinfo=pathinfo($destination); <🎜> $fname=$pinfo[basename]; <🎜> echo "Upload successful!"; <🎜> } <🎜> ?> Calling code:
The code is as follows Copy code
Using mime type restrictions has limitations. Some files may not have the normal mime when uploading, causing the upload to fail. Using suffix name restrictions can solve this problem very well. http://www.bkjia.com/PHPjc/632755.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/632755.htmlTechArticleThis file upload implementation can be used in example application development because it has better security restrictions. Of course, everyone You can also obtain and judge the type of uploaded image files. Change today...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn