PHP: самая простая загрузка файлов
В связи со сверхбольшой занятостью, вряд ли чего-то дельного напишу на этой и следующей неделе :(
Ну а эта маленькая заметка просто возникла в процессе работы. На моём сайте уже есть развёрнутый пример на загрузку файлов со стороны пользователя, включающий замечания по поводу того, что это лучше делать отдельным классом и следить за правами на папки.
Здесь я ставил цель показать загрузку файла "базовым" и совсем простым кодом, по сути, контролируется только размер файла, уж без этого как-то совсем нехорошо :)
Файл index.html
представляет собой обычную форму HTML (без оформления начала и конца файла), в форме соблюдены все 3 условия успешной загрузки:
- отправка данных методом POST (атрибут
method="post"
в теге формы); - атрибут
enctype="multipart/form-data"
в теге формы; - элемент HTML
<input type="file">
в теге формы.
Данные принимает скрипт upload.php
, находящийся в той же папке, что и файл HTML, а загруженные файлы он "складывает" во вложенную папку upload внутри папки скрипта (на реальном хостинге нужно будет позаботиться о правильных правах на неё, в Denwer
сработает и так). В файле также отсутствует обрамление тегами HTML по стандарту. Вот как выглядит оглавление папки со скриптом:

структура папок скрипта в Denwer
По картинке видно, что при запущенном локалхосте Denwer обратиться к скрипту из браузера можно по URL-адресу
http://localhost/upload/
Файл index.html
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="filename"> <input type="submit" value="Загрузить"> </form>
Файл upload.php
<?php if ($_FILES['filename']['size'] > 3*1024*1024) { echo 'Файл больше 3 Мб!'; exit; } if (is_uploaded_file($_FILES['filename']['tmp_name'])) { $newname = './upload/'.$_FILES['filename']['name']; move_uploaded_file($_FILES['filename']['tmp_name'], $newname); echo 'Файл загружен: '. '<a href="'.$newname.'" target="_blank">ссылка</a>'; } else { echo 'Ошибка загрузки файла!'; exit; } echo '<br><a href="index.html">Назад</a>'; ?>
11.01.2017, 15:06; рейтинг: 2143