Военные медали

Загрузчик файлов на сайте vseznak.ru

При разработке веб-сайта vseznak.ru потребовалось добавить функциональность загрузки файлов с помощью серверной части на языке PHP. Для этого был создан специальный скрипт "index.php", который используется в процессе загрузки файлов пользователем.

Структура скрипта

Содержимое скрипта index.php состоит из нескольких разделов:

  1. Начало скрипта и инициализация переменных.
  2. Проверка наличия загруженного файла и его размера.
  3. Проверка существования директории для сохранения файлов.
  4. Генерация уникального имени файла.
  5. Сохранение файла в заданную директорию.
  6. Отправка ответа об успешной или неудачной загрузке файла.

Начало скрипта и инициализация переменных

<?php

// Задаем коды ошибок для проверки успешности загрузки
$success = false;
$error = false;

// Задаем директорию для сохранения файлов
$uploadDir = __DIR__ . '/../uploads/';

// Проверяем, что файл был успешно загружен
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    // Проверяем размер файла
    if ($_FILES['file']['size'] <= 500000) {

В данном разделе происходит инициализация переменных $success и $error, которые будут использоваться для проверки успешности загрузки файла. Также задается директория $uploadDir, в которую будет сохраняться загруженный файл. Далее проверяется, что файл был успешно загружен, а также его размер.

Проверка наличия загруженного файла и его размера

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    // Проверяем размер файла
    if ($_FILES['file']['size'] <= 500000) {
        // Проверяем наличие директории для сохранения файлов
        if (!file_exists($uploadDir)) {
            if (!mkdir($uploadDir, 0777, true)) {
                $error = 'Не удалось создать директорию для сохранения файлов.';
            }
        }
        // ...
    } else {
        $error = 'Размер файла превышает допустимый размер.';
    }
} else {
    $error = 'При загрузке файла произошла ошибка.';
}

В данном разделе происходит проверка размера загруженного файла и наличия директории для его сохранения. Если размер файла превышает допустимое значение (в данном примере 500 000 байт), то переменная $error устанавливается в значение ошибки. Если директория для сохранения файлов не существует, то она создается с разрешениями 0777.

Генерация уникального имени файла

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    // Проверяем размер файла
    if ($_FILES['file']['size'] <= 500000) {
        // ...
        // Генерируем уникальное имя файла на основе текущей даты и времени
        $fileName = date('YmdHis') . '_' . $_FILES['file']['name'];
        // ...
    }
}

В данном разделе происходит генерация уникального имени файла на основе текущей даты и времени с помощью функции date('YmdHis'). Затем к имени файла добавляется оригинальное имя загруженного файла.

Сохранение файла в заданную директорию

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    // Проверяем размер файла
    if ($_FILES['file']['size'] <= 500000) {
        // ...
        // Сохраняем файл в заданную директорию
        if (!move_uploaded_file($_FILES['file']['tmp_name'], $uploadDir . $fileName)) {
            $error = 'Ошибка при сохранении файла.';
        } else {
            $success = true;
        }
        // ...
    }
}

В данном разделе происходит сохранение файла в заданную директорию с помощью функции move_uploaded_file(). Если файл не удалось сохранить, то переменная $error устанавливается в значение ошибки. Если сохранение прошло успешно, то переменная $success устанавливается в значение успеха.

Отправка ответа об успешной или неудачной загрузке файла

if ($success) {
    // Отправляем ответ об успешной загрузке файла
    echo json_encode(['success' => true, 'message' => 'Файл успешно загружен.']);
} else {
    // Отправляем ответ о неудачной загрузке файла
    echo json_encode(['success' => false, 'message' => $error]);
}

В данном разделе отправляется ответ в формате JSON о результате загрузки файла. Если загрузка файла прошла успешно, то отправляется сообщение об успешной загрузке. В случае ошибки отправляется сообщение о неудачной загрузке с указанием причины.

Заключение

Скрипт index.php является важной частью функциональности загрузки файлов на веб-сайте vseznak.ru. Он позволяет проверить размер файла, создать необходимую директорию, сгенерировать уникальное имя для файла и сохранить его. Пользователю отображается сообщение о результате загрузки файла.