Полный цикл в digital

Отправка файлов на сервер

Чтобы загрузить файл на сервер, нам надо использовать форму с параметром enctype="multipart/form-data" и массив $_FILES. Итак, создадим файл upload.php со следующим содержимым:

<!DOCTYPE html>
<html>
<head>
<title>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<?
if ($_FILES && $_FILES["filename"]["error"]== UPLOAD_ERR_OK) {
$name = $_FILES["filename"]["name"];
move_uploaded_file($_FILES["filename"]["tmp_name"], $name);
echo "Файл загружен";
}
?>
<h2>Загрузка файла</h2>
<form method="post" enctype="multipart/form-data">
Выберите файл: <input type="file" name="filename" size="10" /><br /><br />
<input type="submit" value="Загрузить" />
</form>
</body>
</html>

Здесь определена форм с атрибутом enctype="multipart/form-data". Форма содержит специальное поле для выбора файла.

Все загружаемые файлы попадают в ассоциативный массив $_FILES. Чтобы определить, а есть ли вообще загруженные файлы, можно использовать конструкцию if: if ($_FILES)

Массив $_FILES является двухмерным. Мы можем загрузить набор файлов, и каждый загруженный файл можно получить по ключу, который совпадает со значением атрибута name.

Так как элемент для загрузки файла на форме имеет name="filename", то данный файл мы можем получить с помощью выражения $_FILES["filename"].

У каждого объекта файла есть свои параметры, которые мы можем получить:

  1. $_FILES["file"]["name"] имя файла
  2. $_FILES["file"]["type"] тип содержимого файла, например, image/jpeg
  3. $_FILES["file"]["size"] размер файла в байтах
  4. $_FILES["file"]["tmp_name"] имя временного файла, сохраненного на сервере
  5. $_FILES["file"]["error"] код ошибки при загрузке

Также мы можем проверить наличие ошибок при загрузке. Если у нас нет ошибки, то поле $_FILES["filename"]["error"] содержит значение UPLOAD_ERR_OK.

При отправке файла на сервер он сначала загружается во временное место, из которого затем с помощью функции move_uploaded_file() он перемещается в каталог сервера, где расположен скрипт upload.php.

Также мы можем указать другой путь, например, допустим, на сервере есть папка upload, тогда, чтобы загружать в нее файлы, необходимо указать соответствующий путь:

if ($_FILES && $_FILES["filename"]["error"]== UPLOAD_ERR_OK) {
$name = "upload/" . $_FILES["filename"]["name"];
move_uploaded_file($_FILES["filename"]["tmp_name"], $name);
echo "Файл загружен";
}

Функция move_uploaded_file() принимает два параметра путь к загруженному временному файлу и путь, куда надо поместить загруженный файл.

Ограничения и настройка загрузки

По умолчанию размер загружаемых файлов ограничен 2 мб. Однако можно настроить данный показатель в файле конфигурации. Изменим этот показатель, например, до 10 мб. Для этого найдем в файле php.ini следующую строку:

upload_max_filesize = 2M

Изменим ее на:

upload_max_filesize = 10M

Также мы можем настроить папку для временных загружаемых файлов. Для этого в файле php.ini найдем следующую строку:

;upload_tmp_dir =

Изменим ее на:

upload_tmp_dir = "C:/php/upload"

Также в каталоге php нам надо создать папку upload.

Мультизагрузка

Изменим скрипт upload.php так, чтобы он поддерживал множественную загрузку:

<!DOCTYPE html>
<html>
<head>
<title>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<?
if($_FILES) {
foreach ($_FILES["uploads"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["uploads"]["tmp_name"][$key];
$name = $_FILES["uploads"]["name"][$key];
move_uploaded_file($tmp_name, "$name");
}
}
echo "Файлы загружены";
}
?>
<h2>Загрузка файла</h2>
<form method="post" enctype="multipart/form-data">
<input type="file" name="uploads[]" /><br />
<input type="file" name="uploads[]" /><br />
<input type="file" name="uploads[]" /><br />
<input type="submit" value="Загрузить" />
</form>
</body>
</html>

Каждое поле выбора файла имеет атрибут name="uploads[]", поэтому сервер будет рассматривать набор отправленных файлов как единый массив.

Затем используя цикл foreach, проходим по все файлам и сохраняем их в каталог веб-сайта.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг