A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 303

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

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

Для загрузки пользовательских файлов на сервер используется специальный элемент управления,позволяющий указать путь к загружаемому файлу(при помощи кнопки Обзор).Элемент управления имеет следующий синтаксис:

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

<input type="file">

Помимо атрибута type,элемент управления допускает указание атрибутов name и size.Простая форма для отправки файла на сервер демонстрируется ниже:

HTML-форма для загрузки файлов на сервер - index.html

<h2><b> Форма для загрузки файлов </b></h2>
  <form action="upload.php" method="post" enctype="multipart/form-data">
  <input name="filename" type="file">
  <input value="Загрузить" type="submit">
  </form>

Атрибут enctype формы определяет вид кодировки,которую браузер применяет к параметрам формы.Для того чтобы отправка файлов на сервер действовала,атрибуту enctype необходимо присвоить значение multipart/form-data.По умолчанию этот атрибут имеет значение application/x-www-form-urlencoded.

После того как получен HTTP-запрос,содержимое загруженного файла записывается во временный файл,который создается в каталоге сервера,заданном по умолчанию для временных файлов,если другой каталог не задан в файле php.ini(директива upload_tmp_dir).

Характеристики загруженного файла доступны через двумерный суперглобальный массив $_FILES.При этом переменная со значением этого массива может иметь следующий вид:

- $_FILES['filename']['name](содержит исходное имя файла на клиентской машине);

- $_FILES['filename']['size'](содержит размер загруженного файла в байтах);

- $_FILES['filename']['type'](содержит MIME-типа файла);

- $_FILES['filename']['tmp_name'](содержит имя временного файла,в который сохраняется загруженный файл).

Проверить успешность загрузки файла на сервере можно при помощи специальной функции is_upload_file(),которая принимает в качестве единственного параметра имя файла ($_FILES['filename']['name']) и возвращает TRUE в случае успешной загрузки и FALSE в случае неудачи.

Ниже приведен скрипт upload.php,который загружает файл на сервер и копирует его из временного каталога в каталог temp/.

<?php
 if(copy($_FILES['filename']['tmp_name'],
    "temp/".$_FILES['filename']['name']))
 {
  echo "Файл успешно загружен";
 }
 else
 {
   echo "Ошибка загрузки файла";
 }
?>

После выполнения этого скрипта выбранный для загрузки файл будет помещен в подкаталог temp каталога,в котором расположен скрипт,а браузер выдаст фразу "Файл успешно загружен".

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

<strong>Характеристики файла</strong>
<?php
   if(copy($_FILES['filename']['tmp_name'],
    "temp/".$_FILES['filename']['name']))
 {
  echo "Файл успешно загружен 
<";
  // Далее выводится информации о файле
  echo "Характеристики файла: 
";
  echo "Имя файла: ";
  echo $_FILES['filename']['name'];
  echo "
Размер файла: ";
  echo $_FILES['filename']['size'];
  echo "
Каталог для загрузки: ";
  echo $_FILES['filename']['tmp_name'];
  echo "
Тип файла: ";
  echo $_FILES['filename']['type'];
 }
 else
 {
  echo "Ошибка загрузки файла";
 }
?>

В некоторых случаях требуется ограничить размер файла,который может быть загружен на сервер.К примеру,чтобы зазрешить загрузку на сервер файлов размером не более 4Мбайт,нужно скрипт так,как это представлено ниже:

Ограничение размера загружаемого файла

<?php
 if($_FILES['filename']['size'] > 4*1024*1024)
 {
  exit "Размер файла превышает три мегабайта";
 }
if(copy(_FILES['filename']['tmp_name'],
  "temp/".$_FILES['filename']['name']))
 {
  echo "Файл успешно загружен 
";
 }
 else
 {
  echo "Ошибка загрузки файла";
 }
?>

Максимальный размер загружаемого файла можно также задать при помощи директивы upload_max_filesize,значение которой по умолчанию равно 2 Мбайт:

if($_FILES['filename']['size'] > upload_max_filesize)

Значение директивы upload_max_filesize можно изменить в конфигурационном файле php.ini.

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

  1. Nick | 23.02.2012 в 01:07:26 | #1

    Вероятно опечатка??

    $_FILES['filename']['size'](содержит MIME-типа файла);
  2. Mowshon | 24.02.2012 в 17:32:57 | #2

    Nick, действительно опечатка, спасибо за внимательность. Исправил

Оставьте комментарий!

Гость
Комментатор / хотите им стать

Чтобы стать комментатором введите email и пароль. Напишите комментарий. В дальшейшем ваша связка email-пароль, позволит вам комментировать и редактировать свои данные. Не забудьте про активацию (инструкция придет на ящик, указанный при регистрации).

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)