Загрузка...

4. Поля / 4.09. Поле Файл

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

После загрузки файлы размещаются в каталоге system/storage/download/field_file, и каждому файлу присваивается уникальный идентификатор. Если файл будет скопирован из одного файлового поля в другое, физически он не будет дублироваться, будет скопирован только его уникальный идентификатор. При удалении файла из поля вначале проверяется наличие его идентификатора в других файловых полях, и только, если ни в одном из полей не  будет найдет соответствующий идентификатор, файл будет удален. Учтите, что такая проверка выполняется только для файловых полей. Если файл был загружен в файловое поле, скопирован, предположим, в текстовое (при помощи методов получения URL), а затем удален из файлового - файл будет полностью удален из системы, а ссылка на него в текстовом поле станет нерабочей.

Администратору доступны следующие настройки поля:

  • Предварительный просмотр. Поле в режиме просмотра отображает загруженные файлы в виде их названий с гиперссылками, при нажатии на которые загружаются сами файлы. Для некоторых изображений (PNG, GIF, JPG, JPEG) и PDF-файлов можно настроить отображение более наглядным, отображая их непосредственно на странице. Настройки предварительного просмотра позволяют определить размер отображаемых изображений и PDF-окна.
  • Максимальный размер загружаемого файла. Указывается в килобайтах, 0 или пустота означают отсутствие ограничений на уровне системы (они есть на уровне PHP, см. параметры upload_max_filesize и post_max_size в php.ini).
  • Максимальное количество загружаемых файлов. 0 или пустота - сколько угодно, любая цифра - максимальное количество того, что пользователь сможет загрузить в данное поле документа.
  • Разделитель между файлами. Если файлов несколько, то, по умолчанию, они перечисляются через запятую. Администратор может изменить запятую на, к примеру, HTML-тег , чтобы каждый файл отображался на новой строке.
  • Дополнительные параметры, расположенные на вкладке Дополнительное:     Разрешенные для загрузки расширения файлов  и   Разрешенные для загрузки форматы файлов (MIME) Эти два параметра представляют из собой список расширения и MIME-форматов файлов, которые могут быть загружены пользователем - устанавливая галочку возле соответствующего расширения или формата администратор тем самым разрешает загрузку. Списки не исчерпывающие, при необходимости их можно дополнить. Для этого нужно открыть меню Администрирование / Модули, выбрать в списке типов расширения Поля, отыскать поле Файл и нажать на кнопку с карандашом возле него. Возможные варианты расширения и типов перечисляются через запятую.

Методы поля для записи данных

  • Добавить к содержимому поля. Метод позволяет дополнить текущее поле файлами из другого поля.
  • Удалить из содержимого поля. При помощи этого метода можно удалить из текущего поля файлы, которые находятся в другом поле. В роли другого поля может выступать любое поле с идентификаторами файлов, перечисленных через запятую (то есть помимо файлового поля можно использовать строковое, текстовое и т.д.). Определение файлов для удаления из поля производится по их названию и размеру.
  • Добавить файл из файловой системы. При помощи этого метода можно передать полю полный путь к файлу в файловой системе сервера, чтобы поле загрузило этот файл. Например, /var/home/delta/file.txt, если сервер работает на Linux или C:\PATH\file.txt, если сервер работает на Windows.

Методы для получения данных из поля

Поле хранит данные в виде уникальных идентификаторов загруженных файлов. Поэтому, если просто записать файловое поле в строку, то получится аналогичная запись: f957c7f3-6876-11e8-a2ab-201a06f86b88, f957c7f3-6876-11e8-a2ab-201a06f86b89. При помощи методов поля можно:

  • Получить URL первого файла в поле. Метод позволяет получить URL первого файла в поле. 
  • Получить URL всех файлов в поле. Возвращает названия файлов в виде гиперссылок на их скачивание с разделителем, указанным администратором в параметре "Разделитель между файлами".
  • Получить количество файлов в поле. Возвращает число, соответствующих количеству файлов, загруженных в данное поле документа пользователем.
  • Получить содержимое файлов в поле. Метод имеет смысл использовать для текстовых файлов, он позволяет считать их содержимое, скажем, в поле Текст.
  • Получить полный путь каждого файла в поле. Физически файлы, загружаемые в поле, хранятся в файловой системе сервера. Этот метод позволяет получить полный путь к каждому файлу, загруженному в поле.