Открыть меню    

Загрузка файлов при помощи PHP. Основы

Чтобы иметь возможность загрузить файл необходимо выполнить следующие действия:

  • добавить в форму атрибут enctype, а именно enctype="multipart/form-data"
  • Нужному элементу input обозначить атрибут type и присвоить ему значение file, type="file"

Обратите внимание, что обращаться к загруженному файлу нужно не через массив $_POST, а посредством суперглобального массива $_FILES.

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

  • вы можете просканировать файл на наличие вирусов и не только.

HTML

<input type="file" name="image" id="image">

Многомерный массив $_FILES содержит, для вышеприведенного примера, один элемент, ключ которого соответствует значению атрибута name. Который, соответственно, содержит другой массив, состоящий из других элементов (name,type,tmp_name,error,size).

Права доступа

Хостинговые компании, в общей массе, налагают строгие правила на владение файлами и директориями.

Итак, некоторым директориям - директориям, в которые вы собираетесь подгружать файлы, необходимо предоставить глобальный доступ (chmod 777).

Команды, расположенные в наименее безопасном порядке:

  • 777 - крайняя необходимость
  • 700
  • 770

Если вы тестируете загрузку файлов в windows, то вам не придется использовать вышеприведенные команды - все доступно.

Функция move_upload_file позволяет переместить файл из временной папки туда, куда вам нужно. Включает два агрумента:

Имя временного файла (хранится в элементе с ключом tmp_name) и путь к новому расположению файла, включая имя самого файла (вы можете переименовать так, как хотите).

Тестируем на локальном компьютере:

PHP

  move_uploaded_file($_FILES['name_image_file']['tmp_name'], 'C:/upload_test/'.$_FILES['name_image_file']['name']);

В вышеприведенном примере загружаем файл в нужную директорию под оригинальным именем.

На удаленном сервере, наверное, стоит указать путь относительно корневой директории сайта:

/home/sss/ffff/upload_test/;

Комментарии к статье

Добавить комментарий к сниппету