引言

图片上传基础

1. 准备工作

2. HTML表单

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="image">选择图片:</label>
  <input type="file" name="image" id="image">
  <input type="submit" value="上传">
</form>

3. PHP脚本

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $image = $_FILES['image'];

    // 检查图片是否上传成功
    if ($image['error'] === UPLOAD_ERR_OK) {
        // 设置图片保存路径
        $upload_dir = 'uploads/';
        $file_path = $upload_dir . basename($image['name']);

        // 检查文件类型
        $file_type = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
        if ($file_type === 'jpg' || $file_type === 'png' || $file_type === 'gif') {
            // 移动图片到指定目录
            if (move_uploaded_file($image['tmp_name'], $file_path)) {
                echo "图片上传成功!";
            } else {
                echo "图片上传失败!";
            }
        } else {
            echo "不支持的文件类型!";
        }
    } else {
        echo "图片上传错误!错误代码:" . $image['error'];
    }
}
?>

图片命名技巧

1. 随机生成文件名

为了避免文件名冲突,可以使用随机生成的文件名。

function generateRandomFileName($file_type) {
    return md5(uniqid(rand(), true)) . '.' . $file_type;
}

$random_file_name = generateRandomFileName($file_type);
$file_path = $upload_dir . $random_file_name;

2. 使用时间戳

将时间戳作为文件名的一部分,以便于识别上传时间。

function generateTimestampFileName($file_type) {
    return time() . '_' . md5(rand()) . '.' . $file_type;
}

$timestamp_file_name = generateTimestampFileName($file_type);
$file_path = $upload_dir . $timestamp_file_name;

3. 结合使用

可以将时间戳和随机字符串结合,生成更独特的文件名。

function generateCombinedFileName($file_type) {
    return time() . '_' . md5(rand()) . '_' . uniqid(rand()) . '.' . $file_type;
}

$combined_file_name = generateCombinedFileName($file_type);
$file_path = $upload_dir . $combined_file_name;

总结