Загрузка файла Модуля


Я работаю над модулем и пытаюсь добавить окно загрузки для MP3-файла. Кажется, я не могу заставить его работать, что бы я ни пытался сделать. Я посмотрел на file_save_upload, и мне не повезло. Ниже приведен мой код формы. Может ли кто-нибудь указать мне правильное направление для процесса загрузки файлов?

$form['background_audio_file'] = array(
  '#type'=> 'file',
  '#title' => t('Upload File'),
  '#description' => t('Please select your file to be uploaded'),
);

$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Save Changes'),
);

Форма отлично работает, я просто не могу найти хороший пример и имеет смысл загрузить простой mp3-файл. Это D7 кстати.

Заранее благодарю.

Джастин

 2
7
Author: uwe, 2012-02-17

1 answers

Вместо того, чтобы беспокоиться о перемещении/сохранении файла самостоятельно, вы можете использовать managed_file введите элемент и позвольте Drupal сделать это за вас:

function mymodule_some_form($form, &$form_state) {
  $form['background_audio_file'] = array(
    '#type' => 'managed_file',
    '#title' => t('Upload File'),
    '#description' => t('Please select your file to be uploaded'),
    '#upload_location' => 'public://audio-files' 
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save Changes'),
  );

  return $form;
}

function mymodule_some_form_submit($form, &$form_state) {
  // The file is automatically uploaded and saved in the default
  // validation process so you just need to load the file object at this point,
  // mark that you want to keep it, and save it again.
  // The file ID is contained in the $form_state['values'] array
  $file = file_load($form_state['values']['background_audio_file']);
  $file->status = FILE_STATUS_PERMANENT;
  file_save($file);
}

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

Надеюсь, это поможет.

 3
Author: Clive, 2012-02-17 03:07:09