—»     —»   Функция загрузки файлов на сервер с помощью PHP
  Раздел: Образование и Изучение   Комментариев: 4  

Функция загрузки файлов на сервер с помощью PHP

Функция загрузки файлов на сервер с помощью PHP

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

Демо | Скачать

Урок не мой, но в ходе проверки работоспособности данной функции и для создания демо-версии я его написал, и в некоторых местах исправил код. Изменения небольшие, просто переименовал файлы, папку назначения и оформил вывод ошибок.

Для данного урока нам понадобится локальный сервер. В качестве сервера я использовал Denwer (Денвер). Вы можете использовать любой другой сервер, который вам удобен. В замену денвера можете использовать Endels.

Шаг 1. Разметка страницы

Первым шагом нам нужно создать страницу с расширением .PHP, обычный HTML сюда не подходит. После того, как вы создали страницу (у меня она называется index.php) в ней нужно разместить обычную форму, для этого пишем такой код:

<form action="" method="post" enctype="multipart/form-data" class="reset">         
<p class="form"><input name="filename" type="file"><input name="f" type="checkbox" value="1"> - перезаписать</p>
<input name="go" type="submit" value="Загрузить" class="reset">
</form>

Если форма появилась на странице, то значит пока все правильно. Теперь можно закрыть файл index.php и пока про него забыть.

Шаг 2. PHP-функция

На данном шаге мы будем писать основную функцию, которая будет отвечать за загрузку и обработку файлов. Для этого создаем новый файл с расширением .PHP и даем ему название function.php. Теперь в ней начнем писать код функции:

<?php  

// Загрузка файлов
function upload($filename, $pach, $flag = false)
{

// $filename - это свойство name в input
// $pach - директория куда будет сохранён загруженный файл
// директория загрузки должна иметь доступ 777
// $flag - по умолчанию false (0),
// определяет перезапись существующего файла в директории, если выставлен TRUE (1)

// Проверяет существует ли директория и возможно ли её открыть из этого скрипта
if(!opendir($pach)){return 'Директория сохранения файлов, указана неверно!';}

// устанавливаем директорию загрузки файла
$uploadfile = $pach.basename($_FILES[$filename]['name']);

// Устанавливаем вариант перезаписи файла
// если false, файл не перезаписывается, а выдаётся предупреждение.
if(!$flag){
// Проверяем существует ли такой файл в директории
if(is_file($uploadfile)) return("ВНИМАНИЕ! Такой файл уже существует.");
}

if(!empty($filename))
{

// Ограничения размера загружаемого файла
if($_FILES[$filename]['size'] > 1024*2*1024)
{
return("Размер файла превышает 2 мегабайта");

}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES[$filename]['tmp_name']))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную

if(copy($_FILES[$filename]['tmp_name'],$uploadfile))
{
return("OK! Файл успешно загружен.");
}
else
{
return('<strong>'/*. $_FILES[$filename]['tmp_name'].$pach */.$_FILES[$filename]['name'].' </strong> - не является правильно загруженным файлом или
не может быть перемещён из временной директории.');
}
}
else
{
switch($_FILES[$filename]['error'])
{
case 1: echo "Размер файла превышает допустимый.";
break;
case 2: echo "Размер файла превышает допустимый.";
break;
case 3: echo "Загружаемый файл был получен только частично.";
break;
case 4: echo "Файл не был загружен!";
break;
}

}
}
else
{
return('Не указан файл для загрузки!');
}
}
?>

Для удобства весь код подписан (добавлены комментарии).

Шаг 3. Подключаем файл function.php

В этом шаге мы подключим файл function.php к нашему файлу с формой (index.php). Для этого откройте файл index.php и добавьте выше нашей формы вот такой код:

<?php  

// Подключаем файл функций-стандартная инструкция php
include 'function.php';

// Проверяем правильность отправки данных именно с той формы
// в которой значение кнопки, т.е. надпись равна - 'Загрузить'
// Только если это значение совпадает будет активирована
// наша функция загрузки файлов.
if($_POST['go'] == 'Загрузить')
{
echo upload('filename', './files/', $_POST['f']);
}

?>

Особое внимание обратите на последнюю строчку
echo upload(‘filename’, ‘./files/’, $_POST['f']);
, особенно на выделенное слово files. Files — это название директории (название папки) в которой будут хранится все загруженные файлы. Название ей можете дать любое, главное чтобы не по-русски.

Шаг 4. Создаем папку

Теперь создаем в том же месте, где лежат наши файлы index.php и function.php, папку с названием, которое вы дали на предыдущем шаге. В моем случае папка называется files. Структура папки у вас должна быть почти такой же, за исключением названия папки для хранения файлов:

Функция загрузки файлов на сервер с помощью PHP

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

Источник урока: http://red-star.pro
Оригинал урока: http://lphp.ru

Урок для Вас подготовлен командой сайта www.red-star.pro.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: PHP, файлы
Опубликовал d1sapp3ar   Прочитано (раз): 9407   |   Оставлено комментариев: 4
Распечатать
Другие статьи и новости по теме:
Комментарий #1: 14 марта 2014 @ 06:14
Написал: Евгений — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Зачем вот это?
if($_POST['go'] == 'Загрузить')
{
echo upload('filename', './files/', $_POST['f']);
}


Когда можно просто
if (isset($_POST['go'])) {
echo upload('filename', './files/', $_POST['f']);
}
Комментарий #2: 16 марта 2014 @ 04:48
Написал: darkleech — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Жесть, столько ляпов на пустом месте wink
Комментарий #3: 16 марта 2014 @ 12:48
Написал: d1sapp3ar — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Цитата: darkleech
Жесть, столько ляпов на пустом месте wink
Шарит в этом голова? Есть вакансия, только за просто так )))
Комментарий #4: 16 марта 2014 @ 12:51
Написал: darkleech — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Цитата: d1sapp3ar
Шарит в этом голова? Есть вакансия, только за просто так )))

Раба штоле нашел??
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Национальная денежная единица России
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Спонсоры проекта
Баннер в сайдбаре 1 (сквозной)
Баннер в сайдбаре 2 (сквозной)
Спонсоры проекта
Баннер в сайдбаре 3 (сквозной)
Баннер в сайдбаре 4 (сквозной)
Популярные публикации







Свежие шаблоны сайтов каждый день
С миру по нитке
«    Март 2024    »
ПнВтСрЧтПтСбВс
 123
45678910
11121314151617
18192021222324
25262728293031