Посмотрите на file_save_upload () и функции, которые его вызывают.
Функция будет обрабатывать проверку файла и сохранять его в новом месте. В Drupal 7 это также добавляет файл в таблицу file_managed.
Обратите внимание, что файл будет сохранен как временный файл, поэтому обязательно установите постоянный статус файла.
Возможно, вы захотите реализовать функцию file_save_upload в хуке проверки вашей формы (перед обработчиком отправки), чтобы вы могли предупредить пользователя, если загрузка файла не удалась или не соответствует вашим требованиям проверки.
Если имя поля изображения, которое вы пытаетесь проверить, является следующим image
, то первым параметром file_save_upload должно быть изображение, как таковое:
$ path = file_save_upload ('image', ...);
Эта функция затем возвращает путь на сервер, на который было загружено изображение (так что вы можете, например, сохранить этот путь в пользовательском поле базы данных).
$form['#attributes']['enctype']
в Drupal 7. Это позаботилось автоматическиmultipart/form-data
для drupal 7, это сборка в drupal 7 при использовании файлового поля.$file === null
, что означает, чтоno file was uploaded
(в соответствии со спецификациями: api.drupal.org/api/drupal/includes!file.inc/function /… ) Что мне делать в этом случае? Как я могу отлаживать подобные вещи?У меня есть общая функция проверки, которую я использую в основном в темах, которые должны поддерживать загрузку изображений. Возможно, вы сможете использовать его как есть или с небольшими изменениями, но это должно вас далеко увести.
Используя эту функцию, вы получите путь к файлу в качестве значения в обработчике отправки формы. Вы можете захотеть вместо этого идентификатор файла, в зависимости от вашего использования.
источник