(044) 362 48 16   (098) 294 41 60 
			   			  
             
             
            			 | 
         
        
            
            
                   
             | 
         
        | 
    
    
            
            
            
             Основи завантаження файлів   Згідно з протоколом HTTP закачувати файли можна двома способами: 
   Найбільш поширений метод POST, PUT метод у даний час майже не використовується. Щоб броузер передал файл потрібно помістити на сторінку такий HTML код 
    <form enctype="multipart/form-data" method="post" action="upload_script.php">   <input type = "hidden" name = "; MAX_FILE_SIZE "value =" 1000 ">   Виберіть файл: <input name="імя_поля" type="file">   <input type="submit" value="Послать файл">   </ form>   </ div>   ОБОВ'ЯЗКОВО потрібно вказувати <form enctype="multipart/form-data" method="post"...> і дуже бажано <input type="hidden" name="MAX_FILE_SIZE" value="XXXX"> причому ДО поля введення фай ла.   Коли ці умови виконані, можна писати скрипт який буде обробляти завантаження файлів.     <? php   function doUploadolor = "# 007700"> ($ field_name, $ overwrite = false, $ uniquename= False) (   if (! is_array ($ field_name)) $ field_name  nt color = "# 007700"> = Array ($ field_name);   #-------- FILE UPLOAD -----------------   / / Місце зберігання файлів   $ storage0 "> =" / home / www / public_html / uploads / "; 
   / / Маленькі перевірки на майбутні глюки   $ flag = (bool) & nbsp; ini_get ( "safe_mode");   if ($ flag | | (! strstr (  ont> $ _SERVER [ 'SERVER_SOFTWARE'], 'win'))) (   if (getmyuid >()!= Fileowner ($ storage)) (   die ( "Safe mode uncompatibililty. Check owner for '"# 007700 ">. $ Storage" ' ");   )   )   / / Дозволені для закачування розширення (типи) файлів   $ allowed < / font> = array (   'jpg',   'gif',   'png',  00 "> 'pdf',   'doc',   'txt',   'rtf'   ); 
   foreach ($ field_name as $ field_i) ( 
   / / Максимальний розмір файлу. У будь-якому випадку він & nbsp; не може бути   / / Більше ніж upload_max_filesize =?? M в php.ini (2Мб)   / / А також post_max_size =?? M (8Мб)   $ maxsize 61440; / / 60Kб 
   / / Зчитує ім'я закачує файлу   $ filename <font color = "# 007700"> = $ _FILES [$ field_i] [ 'name']; 
   / / Вважаючи ваем розмір закачує файлу   $ filename = $ _FILES [$ field_i] [d0000 "> 'size']; 
   / / Зчитує розширення файлу   $ fileext = strtolower (substr (strrchr ($ filename, "."),  ont color = "# 0000bb"> 1)); 
   / / Забороняємо закачку недозволених типів, наприклад PHP скриптів!!   if (!"# 0000bb"> in_array ($ fileext, $ allowed)) (   die ( "Невірний тип файлу & quot;);   ) 
   / / Забороняємо закачку занадто великих файлів   if ($ filesize font>> $ maxsize) (   die ( "Занадто великий файл");   ) 
   & nbs p; / / зчитує ім'я файлу, який закачан під тимчасову папку   / / Upload_tmp_dir = у файлі php.ini   $ tmpfnamecolor = "# 007700"> = $ _FILES [$ field_i] [ 'tmp_name']) 
   / / Ісправляем ім'я файлу, видаляємо неприпустимі символи, пробіли.   $ filename = ereg_replace ( "[^ a-z0-9._] "," ",   str_replace ( "", "_",   str_replace ( "% 20", "_", strtolower ($ nameor = "# 007700 ">)))); 
   if ($ filename = "") (   die ( "Неприпустиме ім'я   файлу. Тільки англійські букви, цифри та'_'!");   ) 
   / / Повний шлях до закачки файлу    ont> $ filepath = $ storage;   if ($ uniquename) (  000bb "> $ filepath = $ filepath. Time ()." _ ";   )  $ filepath = $ filepath. $ filename; 
   if (is_uploaded_file ($ tmpfname) ( 
   / / Якщо $ overwrite! = True перевіряємо нету чи вже такого файлу     if (! $ overwrite) (   if (file_exists ($ filepath ont>)) (   die ( "Файл з ім'ям <b>". $ filename. "< / b> вже існує.   Перейменуйте файл або видаліть його з сервера ");   )   & nbsp;) 
   move_uploaded_file ($ tmpfname, $ filepath)  or die ( "Помилка завантаження файлу:". $ filename);   / / ЕсЧи користувач Апача і FTP різні, наприклад nobody і pupkin,   / / То щоб мати доступ по FTP (за замовчуванням виставляється 0600)   / / Поставте & nb sp; 0644 або 0666 якщо хочете також перезаписувати по FTP   @ Chmod ($ filepath 700 ">, 0644);   )   )   )   #------------- END FILE UPLOAD ----------   )  >   / / Викликати функцію   doUpload ( 'імя_поля'); 
   / / Закачати декілька файлів СРАзу   doUpload (Array ( 'імя_поля1', 'імя_поля2')); 
   / / Якщо потрібно Перезаписісивать існуючий файл   doUpload ( 'імя_поля', true); 
   / / Якщо потрібно зберегти існуючий файл   / / Буде створено нове ім'я, н: pic.jpg -> 989181984_pic.jpg   doUpload ( 'імя_поля'0 ">, false, true);   ?> 
 
   PHP версії 3 не мав функції move_uploaded_file ()тому до виходу четвертої версії ісполльзовалась функція copy () яка до сих пір знаходиться в документації і користується популярністю. Вкрай небажано використовувати copy () при завантаження файлів, тому що можливі багато глюки. copy () взагалі не буде працювати при включенном open_basedir!! У safe_mode = On щоб використовувати copy () потрібно встановити на тимчасову папку того ж власниками що і виконує скрипт, тоесть аплоад буде неможливо робити, якщо у вас кілька користувачів (як і має бути у випадку віртуальних доменів). Крім того copy ()не виконує перевірку файлу на існування, не повертає   Можливі глюки 
 -  file_uploads = Off в php.ini. Закачування файлів заборонено 
  -  Нету прав на $ storage = "/ home / www / public_html / uploads /". Змініть chown на користувачапід яким запущений скрипт або поставте на папку chmod 0777 
  -  Цільова директорія має іншого власника ніж під яким запущений PHP, коли safe_mode = On. Це повсюдно поширений випадок для кульовий хостингу, коли користувач Апача для прикладу www або nobody,тоді як доступ по FTP, наприклад, для pupkin. Виходу два: 
 
 -  Долбить службу підтримки для налаштування однакових юзеров на FTP і Apache (для вашого віртуального домену). 
  -  Папку для завантаження створити З скрипту під Апачем і поставити на неї 'chmod 0777'. Тоді Ви зможете работа з скриптів обходячи safe_mode заборони й редагувати файли по FTP. 
  
 
  -  Нету прав на upload_tmp_dir =; (налагодження в php.ini). Поставте chmod 0777 на цю папку. 
  -  Файли можуть бути зіпсованим якщо під Апачем запущені деякі модулі, наприклад mod_charset(Також відомий як Russian Apache). Вимкніть його для певних файлів: 
   <Files Upload.php> <br>   CharsetDisable On <br>   </ Files> 
 
  -  НЕ накачується великі файли. Причин може бути кілька, якщо не виконується хочодне з умов, що файл не розміщено: 
 
 -  Розмір файлу більше $ _POST [ 'MAX_FILE_SIZE'] 
  -  Розмір файлу більше upload_max_filesize = 2M (php.ini) 
  -  Розмір файлу більше post_max_size = 8M (php.ini) 
  -  Розмір файлу більше LimitRequestBody (httpd.conf) 
   Исчерпана дискова квота або на upload_tmp_dir = або на цільову директорію 
 
  -  Час виконання скрипта перевищило max_execution_time = (php.ini) 
  -  Час виконання скрипта перевищило Timeout 30 (httpd.conf) 
  -  Час виконання скрипта перевищило таймаут для CGI (Консоль IIS) 
  
 -  Користувач сидить за проксі який забороняє передачу 
                | 
             
             
               
     
   
  
     |