PHP图片文件上传类型限制扩展名限制大小限制与自动检测目录创建。
时间: 2024-05-01 15:22:47 浏览: 16
在PHP中,我们可以通过以下代码来限制上传文件的类型、扩展名以及大小,并且可以自动检测目录是否存在并创建目录:
```php
<?php
// 允许上传的文件类型
$allowed_types = array('jpg', 'jpeg', 'png', 'gif');
// 允许上传的文件大小,单位为MB
$max_size = 10;
// 上传文件保存的目录
$upload_dir = 'uploads/';
// 如果目录不存在则创建目录
if (!file_exists($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
// 获取上传的文件信息
$file_name = $_FILES['file']['name'];
$file_size = $_FILES['file']['size'];
$file_tmp = $_FILES['file']['tmp_name'];
// 获取文件扩展名并转换为小写
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
// 检查文件类型和扩展名是否允许上传
if (in_array($file_ext, $allowed_types) && $file_size <= $max_size * 1024 * 1024) {
// 生成一个唯一的文件名
$new_file_name = uniqid('', true) . '.' . $file_ext;
// 移动上传的文件到目标目录
move_uploaded_file($file_tmp, $upload_dir . $new_file_name);
echo '文件上传成功!';
} else {
echo '文件上传失败!';
}
?>
```
在上面的代码中,我们首先定义了允许上传的文件类型、允许上传的文件大小和上传文件保存的目录。然后,我们通过`file_exists()`函数来检查目录是否存在,如果不存在则创建目录。
接下来,我们通过`$_FILES`数组来获取上传的文件信息,包括文件名、文件大小和临时文件名。我们还使用`pathinfo()`函数来获取文件的扩展名,并将其转换为小写。
最后,我们检查文件类型和扩展名是否允许上传,如果允许,则生成一个唯一的文件名并将文件移动到目标目录。如果不允许,则输出上传失败的消息。