21.05.2024

SOCSEO.RU

Интересная информация и полезные статьи…

Загрузка и отображение изображения на PHP

Среднее прочтение 1 мин.
Загрузка PHP - это однострочный вызов встроенной функции. Любые вводимые пользователем данные, особенно файлы, не могут быть обработаны без надлежащей фильтрации. Почему? Потому что люди могут загружать вредоносные файлы на сервер.

Загрузка PHP — это однострочный вызов встроенной функции. Любые вводимые пользователем данные, особенно файлы, не могут быть обработаны без надлежащей фильтрации. Почему? Потому что люди могут загружать вредоносные файлы на сервер.

После загрузки файла статус должен отображаться в пользовательском интерфейсе в качестве подтверждения. В противном случае, просмотр загруженного изображения — лучший способ подтвердить конечного пользователя.

Шаги по загрузке и отображению предварительного просмотра изображения в браузере

  1. Показать опцию загрузки изображений в HTML-форме.
  2. Считайте данные файла из формы и устанавливайте цель загрузки.
  3. Проверьте размер типа файла перед загрузкой на сервер.
  4. Вызовите функцию загрузки PHP, чтобы сохранить файл в целевом файле.
  5. Отображение загруженного изображения в браузере

1. Покажите опцию загрузки изображений в HTML-форме

Этот код предназначен для отображения пользователю HTML-формы с файлом ввода. Эта форма имеет атрибут enctype="multipart/form-data". Этот атрибут предназначен для загрузки двоичного файла, доступного на стороне PHP.

<form action="" method="post" enctype="multipart/form-data">
    <div class="row">
        <input type="file" name="image" required>
        <input type="submit" name="submit" value="Upload">
    </div>
</form>

Считайте данные файла из формы и устанавливайте цель загрузки

В этом разделе показано основное условие PHP для проверки того, опубликована ли форма и не является ли двоичный файл пустым.

Как только эти условия вернутся в true, будут предприняты дальнейшие шаги для выполнения.

После публикации изображения устанавливается путь к целевому каталогу для загрузки. Переменная $uploadOK — это пользовательский флаг, разрешающий загрузку файла PHP.

Если проверка вернет значение false, эта переменная $uploadOK примет значение 0 и прекратит загрузку.

<?php
if (isset($_POST["submit"])) {

    // Check image using getimagesize function and get size
    // if a valid number is got then uploaded file is an image
    if (isset($_FILES["image"])) {
        // directory name to store the uploaded image files
        // this should have sufficient read/write/execute permissions
        // if not already exists, please create it in the root of the
        // project folder
        $targetDir = "uploads/";
        $targetFile = $targetDir . basename($_FILES["image"]["name"]);
        $uploadOk = 1;
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
        
        // Validation here
    }
}
?>

Проверьте тип и размер файла перед загрузкой на сервер

<?php
// Check image using getimagesize function and get size
    // if a valid number is got then uploaded file is an image
    if (isset($_FILES["image"])) {
        // directory name to store the uploaded image files
        // this should have sufficient read/write/execute permissions
        // if not already exists, please create it in the root of the
        // project folder
        $targetDir = "uploads/";
        $targetFile = $targetDir . basename($_FILES["image"]["name"]);
        $uploadOk = 1;
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

        $check = getimagesize($_FILES["image"]["tmp_name"]);
        if ($check !== false) {
            echo "File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }

    // Check if the file already exists in the same path
    if (file_exists($targetFile)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }

    // Check file size and throw error if it is greater than
    // the predefined value, here it is 500000
    if ($_FILES["image"]["size"] > 500000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }

    // Check for uploaded file formats and allow only 
    // jpg, png, jpeg and gif
    // If you want to allow more formats, declare it here
    if (
        $imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
        && $imageFileType != "gif"
    ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
?>

4. Вызовите функцию загрузки PHP, чтобы сохранить файл в целевом

Как только проверка завершена, вызывается функция PHP move_uploaded_file().

Он копирует файл из временного пути в целевой прямой, указанный на шаге 1.

<?php
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
} else {
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $targetFile)) {
        echo "The file " . htmlspecialchars(basename($_FILES["image"]["name"])) . " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

5. Отобразите загруженное изображение в браузере.

В этом разделе отображается предварительный просмотр изображения с указанием пути к источнику.

Перед установкой источника предварительного просмотра этот код гарантирует, что статус загрузки «true’.

<h1>Display uploaded Image:</h1>
<?php if (isset($_FILES["image"]) && $uploadOk == 1) : ?>
    <img src="<?php echo $targetFile; ?>" alt="Uploaded Image">
<?php endif; ?>

Создайте каталог под названием “uploads” в корневом каталоге загруженного примера проекта. Загруженные изображения будут храниться в этой папке.

Примечание: Каталог “uploads” должен иметь достаточные права доступа к файлам.