1 文件上传基本案例
form.html文件如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传</title> </head> <body> <form action="test.php" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="user"> 头像:<input type="file" name="pic"> <input type="submit" value="提交"> </form> </body> </html>
test.php文件如下:
<?php
if($_FILES['pic']['error'] == 0){
// 1.限制文件上传的大小
$max_size = 2*1024*1024; // 限制上传文件最大值为2M
if($_FILES['pic']['size'] > $max_size){
die('文件大小最大不能超过2M');
}
// 2.防止文件重名
$file_name = uniqid('si_', false); // 文件名称
$file_suffix = strrchr($_FILES['pic']['name'], '.'); // 文件后缀
$file_upload_root_path = './uploads/'; // 文件上传根路径
// 3.按照年月日格式创建子目录
$file_upload_sub_path = date('Ymd') . '/';
if(!is_dir($file_upload_root_path . $file_upload_sub_path)){
mkdir($file_upload_root_path . $file_upload_sub_path, 0777, true);
}
$file = $file_upload_root_path . $file_upload_sub_path . $file_name . $file_suffix; // 文件全名
// 4.限制用户上传的文件类型
$allow_type = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg'];
if(!in_array($_FILES['pic']['type'], $allow_type)){
die('格式错误,请选择jpg|gif|png类型的图片');
}
$finfo = new finfo(FILEINFO_MIME_TYPE);
$file_type = $finfo->file($_FILES['pic']['tmp_name']);
if(!in_array($file_type, $allow_type)){
die('您上传的格式不正确');
}
// 5.执行上传操作
if(move_uploaded_file($_FILES['pic']['tmp_name'], $file)){
echo '上传成功';
}else{
echo '上传失败';
}
}else{
echo '上传失败';
}