📜  在 php 中显示上传的图像(1)

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

在 PHP 中,要显示上传的图像需要经过以下步骤:

  1. 表单提交方式应该为 POST, enctype 属性应该设置为 "multipart/form-data",这样才能上传文件:
<form action="upload.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上传">
</form>
  1. 上传文件需要使用 PHP 文件上传函数,比如 move_uploaded_file()copy()
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 检查上传文件是否是图像文件
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "文件是一个图像 - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "文件不是一个图像.";
        $uploadOk = 0;
    }
}

// 检查上传文件是否已经存在
if (file_exists($target_file)) {
    echo "抱歉,文件已经存在.";
    $uploadOk = 0;
}

// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "抱歉,文件太大.";
    $uploadOk = 0;
}

// 允许上传的文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "抱歉,只允许上传 JPG, JPEG, PNG & GIF 文件.";
    $uploadOk = 0;
}

// 如果上传的文件有误,向客户端发送错误信息
if ($uploadOk == 0) {
    echo "抱歉,文件上传失败.";

// 如果上传的文件都没有问题,将其保存到服务器
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 已经上传成功.";
    } else {
        echo "抱歉,文件上传失败.";
    }
}
  1. 显示图像需要在 HTML 中使用 <img> 标签,指定 src 属性为上传图像的路径:
<img src="uploads/<?php echo basename($_FILES["fileToUpload"]["name"]); ?>" alt="上传的图像">

完整的代码示例:

<form action="upload.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上传">
</form>

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "文件是一个图像 - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "文件不是一个图像.";
        $uploadOk = 0;
    }
}

if (file_exists($target_file)) {
    echo "抱歉,文件已经存在.";
    $uploadOk = 0;
}

if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "抱歉,文件太大.";
    $uploadOk = 0;
}

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "抱歉,只允许上传 JPG, JPEG, PNG & GIF 文件.";
    $uploadOk = 0;
}

if ($uploadOk == 0) {
    echo "抱歉,文件上传失败.";

} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 已经上传成功.";
    } else {
        echo "抱歉,文件上传失败.";
    }
}
?>

<img src="uploads/<?php echo basename($_FILES["fileToUpload"]["name"]); ?>" alt="上传的图像">

这样,网页中就能够显示上传的图像了。