📜  在 php 中更改名称的图像上传(1)

📅  最后修改于: 2023-12-03 15:07:45.664000             🧑  作者: Mango

在 PHP 中更改名称的图像上传

在处理图像上传时,我们常常需要对上传的图像进行重命名,这可以避免上传的图像文件名重复,导致后续操作的错误。下面介绍在 PHP 中如何实现更改名称的图像上传。

HTML 代码

首先,我们需要在 HTML 中添加一个文件上传表单,具体代码如下:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="image">
  <input type="submit" value="Upload">
</form>

这是一个基本的文件上传表单,其中 enctype="multipart/form-data" 表示该表单可以上传文件。

PHP 代码

接下来,我们需要在 PHP 中处理上传的图像。具体代码如下:

<?php
$target_dir = "uploads/";          // 上传文件目录
$target_file = $target_dir . basename($_FILES["image"]["name"]);  // 上传文件路径
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));  // 获取上传文件类型

// 检查上传的文件是否为图像
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["image"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
    } else {
        echo "File is not an image.";
        exit;
    }
}

// 检查上传文件是否存在
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    exit;
}

// 检查上传文件大小
if ($_FILES["image"]["size"] > 5000000) {
    echo "Sorry, your file is too large.";
    exit;
}

// 允许上传的文件类型
$allowed_types = array("jpg", "png", "jpeg", "gif");
if (!in_array($imageFileType, $allowed_types)) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    exit;
}

// 生成新文件名
$new_file_name = uniqid() . '.' . $imageFileType;
$target_file = $target_dir . $new_file_name;

// 移动上传文件并更名
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
    echo "The file ". $new_file_name. " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}
?>

以上 PHP 代码实现了以下功能:

  1. 检查上传的文件是否为图像类型;
  2. 检查上传的文件是否已经存在;
  3. 检查上传的文件大小;
  4. 检查上传的文件类型是否为允许的类型;
  5. 生成新文件名;
  6. 移动上传文件并更名。

也就是说,我们可以在上传文件时对上传的文件进行多方面的限制,确保上传的文件符合要求。

总结

以上就是在 PHP 中更改名称的图像上传的介绍。通过以上代码,我们可以扩展图像上传的功能,添加多种校验和效验功能,保证程序的稳定和安全性。