图片上传基础

<?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 "文件类型不允许";
    }
}
?>