Как загрузить файл с помощью PHP функции move_uploaded_file


Опубликованно 08.11.2018 06:42

Как загрузить файл с помощью PHP функции move_uploaded_file

В какой-то момент в вашей карьере вы хотите создать настоящий динамичный веб-приложения. Возможно, вы решите написать свою социальную сеть. Как разработчик вы будете стараться заинтересовать пользователей, дать им возможность загружать фотографии, музыку, обмениваться файлами. В этом случае вам нужно знать и уметь работать с PHP функция переместить загруженный файл.

Форма для сбора данных

PHP поддерживает загрузку любого файла методом POST. Поэтому для передачи данных на сервер, или сохранить их на локальный компьютер нужен HTML-формы. Используя разметки, выберите уединенное место, где пользователь может выбрать файл. Сценарий вы хотите настроить все таким образом, что данные передаются без перерыва. Рассмотрим этот процесс на примере загрузки фото для профиля.

<действие формы="<?PHP эхо в $_SERVER['таки']; ?>" метод="отправить" идентификатор="signup_form" enctype="multipart/данные формы"> тег <fieldset> <метка для="имя">имя:</метка> <входной тип="текст" имя="имя" размер="20"> <метка для="фамилия">фамилия:</метка> <входной тип="текст" имя="фамилия" размер="20"> <вход тип="скрытый" имя="аргумент max_file_size" значение="2000000"> <метка для="user_pic">загрузить изображение:</метка> <входной тип="файл" название="user_pic" размер="30"> <тип входного="представить" значение="отправить"> <тип входного="сброс" значение="очистить"> </полей> </форма>

Обратите внимание на атрибут enctype="multipart/данные формы". Благодаря ему, форма настроена на получение данных. Чтобы держать пользователей в Скачать коты 25 МБ, в скрытом поле, убедитесь в том, чтобы установить ограничение на размер изображений. Для изображения профиля достаточно 2 МБ, как в этом примере.

Загрузить фотографию

В форме выше в атрибут action <?PHP эхо в $_SERVER['таки'];?>, это означает, что прием и обработка изображения происходит в один и тот же документ. Если вас это смущает и вы хотите, чтобы каждое действие имело свой отдельный скрипт, вставить в место имя структурой скрипта, например create_profile.php. Теперь весь код, в том числе на PHP перенести функции загружен файл записи в файл.

<?в PHP //собирать информацию из формы $имя = функции htmlspecialchars(функция TRIM($_REQUEST['имя'])); $фамилия = функции htmlspecialchars(функция TRIM($_REQUEST['фамилия'])); //место хранения файла $uploads_dir = HOST_WWW_ROOT."добавления/profile_pics/"; $image_fieldname = "user_pic"; // Потенциальных ошибок PHP загрузка файлов $php_errors = массив(1 => 'превышен максимальный размер файла, указанный в PHP.Ини', 2 => 'превышен максимальный размер файла, указанного в HTML-форме', 3 => 'была отправлена только часть файла', 4 => 'файл для загрузки не выбран.'); //проверка на ошибку при отправке файла (Переменную$_FILES[$image_fieldname]['Ошибка']==0) или умереть("ошибка при отправке файла". $php_errors [переменную$_FILES[$image_fieldname]['ошибка']]); //проверить, есть ли в отправленных файл, или это попытка взлома @is_uploaded_file (переменную$_FILES[$image_fieldname]['tmp_name']) или умереть('Вы coversate аморальный поступок, позор!'".Имя файла: "".'{Переменную$_FILES[$image_fieldname]['tmp_name']}'"); //является ли файл, который вы загружаете изображения @также (переменную$_FILES[$image_fieldname]['tmp_name']) или умереть("ошибка! выбранный файл не является изображением". "Имя файла {переменную$_FILES[$image_fieldname]['tmp_name']}"); //присвоение загружаемого файла уникальное имя $сейчас = время(); пока(file_exists($upload_filename = $uploads_dir.$теперь.'-'.$_FILES больше[$image_fieldname]['имя'])){ $теперь++; } ?>

Код содержит вспомогательные переменные: $Upload_dir прописано путь к директории для загрузки. Вместо HOSW_WWW_ROOT написать абсолютный путь к рабочей директории на сервере или на вашем компьютере. Переменная $image_fieldname-это имя поля для изображения в HTML-форме.

Как видите, прежде чем вызов, чтобы переместить загруженный файл строки, которая проверяет загруженные изображения. Конечно, безопасного приложения PHP-это миф, но должны иметь хотя бы минимальную защиту.

Массив ошибок валидации $php_errors начинается не с нуля, а с единицы. Индекс [0] в переменную $_FILES[$image_fieldname]['ошибка'], который в случае успешной загрузки возвращает число 0. В PHP переменную $_FILES массив-это специальный массив, который содержит всю информацию о файле. Получить доступ к этим данным использовать индекс поля ввода имени, которое мы ранее вывели в отдельную переменную $image_fieldname:

//проверка на ошибку при отправке файла (Переменную$_FILES[$image_fieldname]['Ошибка']==0) или умереть("ошибка при отправке файла". $php_errors [переменную$_FILES[$image_fieldname]['ошибка']]); Когда переместить загруженный файл php не работает

Вы думаете, что вы все сделали правильно, но переводчик дает ошибку? Файл не загружается в указанной директории и появляется в совершенно неожиданных местах? Сначала проверьте в PHP.размер Ини допускается в параметр upload_max_filesize. Чаще всего эта ошибка возникает в Денвер. Так откройте PHP.в ini (обычно находится в папке PHP) и просто установить нужный размер:

;;;;;;;;;;;;;;;; ; Загрузка Файлов ; ;;;;;;;;;;;;;;;; ; Следует ли разрешить закачивание файлов. ; http://php.net/file-uploads file_uploads=о ; Временную папку для загруженных файлов по протоколу HTTP (будет использоваться по умолчанию, если не ; указан). ; http://php.net/upload-tmp-dir upload_tmp_dir конфигурационного="***" ; Максимально допустимый размер загружаемых файлов. ; http://php.net/upload-max-filesize upload_max_filesize=5М ; Максимальное число файлов, которые могут быть загружены с помощью одного запроса max_file_uploads=50

Если вы работаете на сервере, спросите у провайдера, какой размер файла разрешено загружать. Бесплатный хостинг максимальная сумма обычно составляет 2 МБ. Вторая причина, почему код может не неправильно назначенный каталог. Проверяем второй аргумент функции move_uploaded_file, он должен включать путь и быть уверенным именем. Автор: Cherchenko Ася Октября 1, 2018



Категория: обо всём