Обучение HTML, Excel, Word. Как сделать свой сайт бесплатно

Microsoft Office

Сайтостроение

HTML

Программинг

Компьютер

Графика

Разное

· Основы Word
· Основы Excel
· Основы VBA
· Основы OpenOffice
· Как сделать сайт
· Свой сайт от А до Я
· Оптимизация сайта
· Шаблоны для сайта
· Обзор CMS
· Основы HTML
· HTML-теги
· Основы CSS
· Основы PHP
· Основы JavaScript
· Софт для сайта
· Что внутри ПК
· ПК для чайников
· Все о BIOS
· Web-графика
· САПР: AutoCAD
· Статьи
· Форум
· SEO-новости
Главная страница Карта сайта
Учебник PHP
Основы SQL
  1. Введение
  2. Инструменты
  3. Первый шаг
  4. Структура языка
  5. Массивы
  6. Глобальные массивы
  7. Cookies
  8. Сессии
  9. Загрузка файлов
  10. Работа с файлами
  11. Работа с базами данных
  12. Работа в сети
  13. Отправка почты
  14. Безопасность
  15. Автоматизация
  16. Регулярные выражения в PHP
  17. Интеграция
 



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

Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

Практически в каждом проекте разработчик сталкивается с необходимостью загрузки файлов на сервер. Фотографии, картинки, документы, архивы и многое другое может быть загружено на сервер посредством web-интерфейса (через браузер).


Загрузка данных на сервер может происходить одним из двух методов: GET или POST. Метод GET подразумевает, что все параметры передаются в строке URL. Например, строка:

    http://localhost/index.php?name=myname&page=10

определяет запрос GET к странице index.php. При этом скрипту передаются параметры "name" и "page" со значениями "myname" и "10" соответственно. Как видите, запрос состоит из пар "имя=значение", объединённых через "&". Запрос отделяется от адреса страницы знаком вопроса "?".

Но GET не подходит для передачи больших данных. Для этого существует метод POST. Этот метод передаёт данные скрыто от пользователя, а адрес страницы остаётся неизменным. Теоретически, метод POST позволяет передавать огромные блоки данных, но большинство провайдеров устанавливают жесткое ограничение в 5-10 мегабайт.

Для реализации загрузки файла необходимо снабдить пользователя соответствующей формой. Для загрузки файлов предназначен тег input типа file.

    <form action="receiver.php" method="post"
        enctype="multipart/form-data">

        Выберите файл для загрузки: 

        <input type="file" name="ufile" /><br />

        <input type="submit" name="send" value="Отправить!" />
    </form>

Пользователь выбирает нужный файл, нажимает кнопку "Отправить!", после чего браузер передаёт указанный файл на сервер. По окончании загрузки файла запускается receiver.php, и ему автоматически становятся доступны все переданные в форме данные.

Список загруженных файлов хранится в глобальном массиве $_FILES. Это ассоциативный массив, где каждый элемент содержит описание одного из файлов. Рассмотрим на примере:

<?php
  // инициализируем нужные переменные
  $filename = '';
  $filepath = '';
  $filetype = '';

  // проверяем, что файл загружался
  if(isset($_FILES['ufile']) &&
      $_FILES['ufile']['error'] != 4)
  {
    // проверяем, что файл загрузился без ошибок
	if($_FILES['ufile']['error'] != 1 &&
        $_FILES['ufile']['error'] != 0)
	{
	  $error = $_FILES['ufile']['error'];
	  $errors []= 'Ошибка: Файл не загружен.'.
                    ' Код ошибки: ' . $error;
	}
	else
    {
      // файл загружен на сервер

      // проверяем файл на максимальный размер
	  $filesize = $_FILES['ufile']['size'];
	  if($_FILES['ufile']['error'] == 1 ||
            $filesize > 3145728)
	  {
	   	$filesize = ($filesize != 0)?
            sprintf('(%.2f Мб)' , $filesize / 1024): '';
	   	die('Ошибка: Размер прикреплённого файла '.
            $filesize.' больше допустимого (3 Мб).');
	  }
	  else
	  {
	    $filename = $_FILES['file']['name'];
	   	$filepath = $_FILES['file']['tmp_name'];
	   	$filetype = $_FILES['file']['type'];
	   	if($this->filetype == null ||
            $this->filetype == '')
	   	  $this->filetype = 'unknown/unknown';
	  }
	}
  }

  echo 'Успешно загружен файл: ' . $filename;

?>

Все загруженные файлы сохраняются сервером во временном каталоге и автоматически удаляются после завершения скрипта. Если вам необходимо сохранить файл на сервере - его надо переместить в один из каталогов сайта. Для этого служит специальная функция move_uploaded_file(). Обчно она используется в паре с функцией is_uploaded_file(), которая позволяет определить, был ли файл загружен через форму. Например:

<?php
    // $filename - имя загруженого файла
    if(is_uploaded_file($filename))
        move_uploaded_file($filename,
            'files/' . basename($filename));
    // файл будет перемещён в каталог files/
?>

Информация о каждом загруженном файле представляется в скрипте как элемены массива $_FILES. Имя элемента определяется атрибутом name тега формы. В нашем случае атрибут name равен "ufile", значит данные об этом файле будут храниться в элементе $_FILES['ufile'].

Каждый элемент $_FILES так же является массивом, содержащим пять элементов с фиксированными именами:

$_FILES['ufile']['name'] Содержит исходное имя файла, каким оно было на компьютере пользователя.
$_FILES['ufile']['type'] Содержит MIME-тип файла. Например, для jpeg-изображения будет содержать "image/jpeg".
$_FILES['ufile']['size'] Содержит истинный размер переданного файла в байтах.
$_FILES['ufile']['tmp_name'] Содержит полный путь с загруженному на сервер файлу. Если вам не нужно хранить загруженный файл на сервере - можно пользоваться этим параметром для обращения к файлу.
$_FILES['ufile']['error'] Содержит код ошибки, если таковая имела место. Если ошибок нет - содержит 0.

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

top




 




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

© 2005-2012
Юрий Кордык All Rights Reserved

 

E-mail:
admin@on-line-teaching.com