назад к разделу "PHP программирование"

организация загрузки файлов

раздел: PHP программирование
последнее изменение: 2014-11-09
автор: Юрий Матвеев

Вначале рассмотрим случай загрузки одиночного файла: Заводим форму такого типа:


<form enctype="multipart/form-data" action="send_file.php" method="POST"/>
    
    Выберите файл: 
<form/>

MAX_FILE_SIZE - максимальный размер загружаемого файла;
send_file.php - имя файла-обработчика (обычно я делаю форму и обработчик в одном файле);
file_name - имя поля из загрузочной формы, где отображается название выбранного для загрузки файла;

Код для обработки POST-запроса:

//устанавливаем директорию для загрузки файлов:
$updir = "../slider/";
// переменная с оригинальным именем загружаемого файла:
$pre_name = basename($_FILES["file_name"]["name"]);
// полный путь к загруженному файлу:
$upfile = $updir . basename($_FILES["file_name"]["name"]);
if (move_uploaded_file($_FILES["file_name"]["tmp_name"], $upfile)) {
    echo "Файл успешно загружен!.";
} else {
echo "Ошибка загрузки";
}
// информация о произведенной загрузке (именах файлов и ошибках)
// пишется в глобальном массиве $_FILES и может быть выведена:
print_r($_FILES);

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

Выберите файл:
................ Выберите файл:

- добавятся дополнительные полностью идентичные поля для выбора файлов, а строковый элемент file_name превратится в массив file_name[].

Соответственно в файле - обработчике нужно будет перебрать все элементы этого массива:

//устанавливаем директорию для загрузки файлов:
$updir = "../slider/";
.............
for ($i = 0; $i < count($_FILES["file_name"]["tmp_name"]);$i++) {
.............
// переменная с оригинальным именем загружаемого файла:
$pre_name = basename($_FILES["file_name"]["name"]);
// полный путь к загруженному файлу:
$upfile = $updir . basename($_FILES["file_name"]["name"]);
if (move_uploaded_file($_FILES["file_name"]["tmp_name"], $upfile)) {
    echo "Файл успешно загружен!.
";
} else {
echo "Ошибка загрузки";
}
}

Как правило, при загрузке графических файлов требуется автоматически создать одну или две копии изображения с меньшими размерами (для вывода в разного рода списках имеющихся файлов и слайдере). Делается это для того, чтобы ускорить вывод индексных страниц. Ссылка же для просмотра одиночной картинки будет вести на оригинал изображения, или, -скорее всего, даже на адаптированную под размер экрана монитора копию.
Например, можно создать адаптивную копию оригинала картинки с размерами примерно 600х800 пкс., а также "аватар" с размерами около 150х200 пкс. Сделать это можно легко с помощью специализированных функций под разные типы изображений:

$image = imagecreatefromjpeg($tmp);
$image = imagecreatefrompng($tmp);
$image = imagecreatefromgif($tmp);

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


Вы можете оставить комментарий или отзыв об этой статье
  • X
    16
    Ваше имя:
    Комментарий:
    loader