图片上传基础
<?php
// 检查是否有文件被上传
if ($_FILES['image']) {
// 获取文件信息
$file_name = $_FILES['image']['name'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_size = $_FILES['image']['size'];
$file_error = $_FILES['image']['error'];
// 定义允许的图片类型
$allowed_types = array('jpg', 'jpeg', 'png', 'gif');
// 获取文件扩展名
$file_ext = strtolower(end(explode('.', $file_name)));
// 检查文件类型是否允许
if (in_array($file_ext, $allowed_types)) {
// 生成唯一的文件名
$new_file_name = uniqid() . '.' . $file_ext;
// 移动文件到指定目录
$move = move_uploaded_file($file_tmp, "uploads/" . $new_file_name);
if ($move) {
echo "文件上传成功: " . $new_file_name;
} else {
echo "文件上传失败";
}
} else {
echo "文件类型不允许";
}
}
?>
解决重名问题
在上面的代码中,我们使用了uniqid()函数来生成唯一的文件名。uniqid()函数可以生成一个基于当前时间戳的唯一ID,确保每次上传的文件都不会与之前上传的文件重名。
快速命名攻略
使用时间戳:将当前时间戳作为文件名的一部分,确保每次上传的文件名都是唯一的。
添加随机字符串:在时间戳的基础上,添加一个随机字符串,进一步增强唯一性。
保留原始文件名:在文件名中保留原始文件名的一部分,方便识别和查找。
以下是结合上述策略的代码示例:
<?php
// 检查是否有文件被上传
if ($_FILES['image']) {
// 获取文件信息
$file_name = $_FILES['image']['name'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_size = $_FILES['image']['size'];
$file_error = $_FILES['image']['error'];
// 定义允许的图片类型
$allowed_types = array('jpg', 'jpeg', 'png', 'gif');
// 获取文件扩展名
$file_ext = strtolower(end(explode('.', $file_name)));
// 检查文件类型是否允许
if (in_array($file_ext, $allowed_types)) {
// 生成唯一的时间戳和随机字符串
$new_file_name = uniqid() . "_" . rand(1000, 9999) . "_" . $file_name;
// 移动文件到指定目录
$move = move_uploaded_file($file_tmp, "uploads/" . $new_file_name);
if ($move) {
echo "文件上传成功: " . $new_file_name;
} else {
echo "文件上传失败";
}
} else {
echo "文件类型不允许";
}
}
?>