Загрузка файлов на сервер

Перед тем как начать загружать файлы с помощью PHP, нужно убедиться, что эта функция включена. Это, пожалуй, самый важный шаг к тому, чтобы загрузка прошла без каких либо проблем. Для того чтобы проверить включена ли загрузка файлов, надо открыть файл php.ini и проверить имеет директива file_upload значение true, тоесть его значение равно 1. (Если у Вас нет возможности открывать или изменять файл php.ini, тогда обратитесь в службу поддержки Вашего хостинга и попросите, чтобы они включили это свойство.) Если Вы используете версию PHP старше 4.0.3, эта директива не присутствует в файле php.ini.

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

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

Теперь, когда мы рассмотрели некоторые конфигурации, можно приступать к созданию скрипта загрузки файлов на сервер. Для создания скрипта мы будем использовать два файла – upload.html и upload.php. Если Вы не знаете язык HTML, то не надо волноваться. Мы с вами будем использовать только тег <form>.

Ну что приступим. Создадим файл upload.html, добавим в него форму для загрузки:


 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>PHP Upload System</title>
 </head>
 <body>
 <form name="file_uploader" action="upload.php" method="post" enctype="multipart/form-data">
 <input type="file" name="data"><br />
 <input type="submit" name="upload" value="Upload File">
 </form>
 </body>
 </html>
 

Можно заметить, что параметр enctypeравен значению multipart/form-data. Этот параметр необходим, чтобы Вы могли загружать файлы. Если параметр enctypeне установлен, то загрузка не будет работать.

Хорошо, с формой я думаю, проблем никаких не возникло. Теперь приступим к самой интересной части урока. Создадим файл upload.php и добавим в него обработчик.


 <?php
 if ( !isset($_FILES['data']['name']) || $_FILES['data']['name'] == '' ) {
 die('No input file specified. Please go back and select a file to upload.');
 } 
 $max_filesize = 999999;
 $filetype = 'text/plain';
 $upload_path = '/ngbbs/';
 if ($_FILES['data']['size'] > $max_filesize) {
 die('Your filesize is too large. Please make your filesize smaller than ' . $max_filesize . ' bytes.');
 }
 if ($_FILES['data']['type'] != $filetype) {
 die('Sorry, your file was not of the ' . $filetype . ' mimetype (yours was ' . $_FILES['data']['type'] . ').');
 } 
 $copy_to = $_SERVER['DOCUMENT_ROOT'] . $upload_path . $_FILES['data']['name'];
 $upload = move_uploaded_file($_FILES['data']['tmp_na
 me'], $copy_to);
 if (!$upload) {
 die('Sorry, your file could not be uploaded.');
 }
 echo 'Your file contents are below: <hr>' . file_get_contents($copy_to);
 ?>
 

Хорошо, давайте теперь рассмотрим работу скрипта. $_FILES – глобальная переменная которая удерживает содержимое файла, в которую был загружен как $_POST или $_GET. Переменная $_FILE записывается в виде:


 $ _FILES [ 'Html_name'] [ 'Name']; //возвращает имя файла на компьютере пользователя 
 $ _FILES [ 'Html_name'] [ 'Size']; //возвращает размер файла в байтах 
 $ _FILES [ 'Html_name'] [ 'Type']; //возвращает MIME тип файла 
 $ _FILES [ 'Html_name'] [ 'tmp_name']; //извлекает фактические сам файл
 

Для загрузки файлов без ошибок, убедитесь, чтобы путь к каталогу в который Вы хотите загрузить файл был доступен для записи.

Move_uploaded_file () принимает два параметра, оригинальный файл ($ _FILES [‘html_name’] [‘tmp_name’]), и путь, в который вы хотите, его загрузить. Это очень просто, поскольку шаги подробно показано в самом коде. Эта функция доступна только в версиях 4.0.3 и выше. Если вы используете старую версию вы, можете использовать copy(). Move_uploaded_file () и copy () возвращают TRUE в случае успеха и FALSE, если неудачно. Это позволяет очень легко определить был, загружен файл или нет. На этом все!

Понравился урок? Добавьте его к себе в закладки.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *