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

Перед тем как начать загружать файлы с помощью 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, если неудачно. Это позволяет очень легко определить был, загружен файл или нет. На этом все!

Просмотров: 1353      Опубликовал: Евгений Фединчик      Дата: 05.03.2010 12:58:36
  • Понравился урок? Добавьте его к себе в закладки.

    Последние уроки категории:

    Сокращение PHP кода

    Вы задумывались когда — нибудь о том, что лишний и бесполезный код убивает ваше время разработки приложения/сайта. Хотя это и кажется мелочью, но когда такой мелочи становится много, то время, потраченное впустую, становится ценным. И так давайте посмотрим, что можно и нужно сокращать...

    Видимость переменных в PHP

    В данном уроке рассматривается область видимости переменных PHP. Объясняется различие локальной и глобальной области видимости, показывается как получить доступ к глобальным переменным внутри функции, как работать с суперглобалами и создавать статические переменные.

    Как читать Rss ленты?

    Читалки и агрегаторы RSS используются для доступа, чтения и управления периодически-обновляемыми лентами RSS (или Atom), которые генерируются веб-сайтами. Эти ленты предоставляют доступ к последним материалам с этих сайтов.

    Установка и настройка PHP+Apache

    В этом уроке хотелось бы поднять очень интересную тему – Установка и настройка веб сервера PHP5 + Apache. В интернете довольно много различных инструкций по данной теме, но только вот в основном это копипаст, а не инструкция для человека, я же постараюсь объяснить все намного проще – на пальцах. Причина для установки локального вебсервера довольно много, например скорость выполнения и отладки скриптов, простота загрузки и модернизации контента и еще много чего.

    Как выбрать фреймворк

    Так уж повелось, что лень – это двигатель прогресса и как бы странно это не звучало, все те блага цивилизации, которые мы имеем сейчас были сделаны в первую очередь для нашего комфорта. Так и программисты чтобы облегчить себе жизнь и тем самым получить возможность создавать более сложные проекты за менее долгое время придумали сделать себе фреймворки.

    Комментарии:

    • Осталось: 1000 символов.
      Сохранить комментарий Отправка комментария
    lessons
    downloads
    search
    hosting

    Ищите хороший и не дорогой хостинг?

    Хостинг avahost.ua
    VPS VDS - виртуальный выделенный сервер
    sistems
    RBK Money

    Обменник.ws
    Яндекс
    Статистика HitUa