13.03.14, 17:52
0 комментарий
  Уроки

Функция загрузки файлов на сервер с помощью 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


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

Исходники в архиве

СКАЧАТЬ

Вес файла
3.32 Kb

Реклама

Напишите своё мнение

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204