Изучаем PHP 7. №16. Суперглобальная переменная $_FILE. Загружаем файлы на сервер.


Загрузка файлов на сервер — это важный вопрос. Сегодня мы рассмотрим небольшой пример как это сделать.
Для начала создайте в корне вашего сайта папку files, где будут храниться наши файлы после загрузки. Далее создадим файл translit.php, куда запишем функцию транслита из предыдущего урока. Она нам понадобиться, чтобы записывать названия фалов на кириллице латиницей. Ну, и собственно сам файл index.php, где и будет размещаться наш скрипт загрузки.

Чтобы форма могла отправлять файлы, ей нужно передать параметр:

 enctype="multipart/form-data"

Файл по умолчанию загружается в промежуточную папку, откуда мы забираем его функцией move_uploaded_file().
При загрузке суперглобальная переменная несет в себе информацию о загружаемом файле, которую можно обрабатывать:
$_FILES[‘uploadfile’][‘name’] — имя файла до его отправки на сервер, например name.docx;
$_FILES[‘uploadfile’][‘size’] — размер принятого файла в байтах;
$_FILES[‘uploadfile’][‘type’] — MIME-тип принятого файла (если браузер смог его определить), например: image/gif, image/png, image/jpeg, text/html;
$_FILES[‘uploadfile’][‘tmp_name’] (так мы назвали поле загрузки файла) — содержит имя файла во временном каталоге, например: /tmp/phpV3b3qY;
$_FILES[‘uploadfile’][‘error’] — Код ошибки, которая может возникнуть при загрузке файла.

Коды ошибок при загрузке:
UPLOAD_ERR_INI_SIZE = Размер файла больше разрешенного директивой upload_max_filesize в php.ini,
UPLOAD_ERR_FORM_SIZE = Размер файла превышает указанное значение в MAX_FILE_SIZE,
UPLOAD_ERR_PARTIAL = Файл был загружен только частично,
UPLOAD_ERR_NO_FILE = Не был выбран файл для загрузки,
UPLOAD_ERR_NO_TMP_DIR = Не найдена папка для временных файлов,
UPLOAD_ERR_CANT_WRITE = Ошибка записи файла на диск.

Также в скрипте использованы такие функции:
rand(5,100) — случайное число от 5 до 100.
date(‘dmy’) — сегодняшняя дата.
basename() — защита от атак на файловую систему

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

<form enctype="multipart/form-data" action="index.php" method="POST">
    Выберите файл: <input name="upfile" type="file" />
    <input type="submit" value="Загрузить" />
</form>

<?php 
include_once 'translit.php';

//Папка куда будем загружать файлы
$updir = $_SERVER["DOCUMENT_ROOT"].'/files/';
//Добавляем к имени фала случайное число от 5 до 100 и сегодняшнюю дату
$fname = rand(5,100).date('dmy').'.'.translit(basename($_FILES['upfile']['name']));
$upfile = $updir.$fname;

//перемещаем файл из временной папки в заданную
echo '<pre>';
if (move_uploaded_file($_FILES['upfile']['tmp_name'], $upfile)) {
    echo "Файл {$fname} корректен и был успешно загружен.<br>";
} else {
    echo "Загрузка не удалась!<br>";
}

// echo 'Некоторая отладочная информация:';
// print_r($_FILES);

print "</pre>";


    echo "Путь к документам на сервере: " . $updir;
 ?>

Советую для дополнительного ознакомления:

http://www.php.su/phphttp/?uploads
http://www.php.net/file-upload.post-method
http://nl1.php.net/manual/ru/function.move-uploaded-file.php
http://www.wellsait.ru/articles/?url=upload_file

—————————-
http://tyt-koshka.ru/razdel/koshki-best/

Одна идея о “Изучаем PHP 7. №16. Суперглобальная переменная $_FILE. Загружаем файлы на сервер.

  1. Пингбэк: Изучаем PHP 7. №17. Выводим список файлов в папке на экран. | Slusar.Su

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.