Загрузка файла Модуля
Я работаю над модулем и пытаюсь добавить окно загрузки для 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 кстати.
Заранее благодарю.
Джастин
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
, чтобы при необходимости ими можно было управлять с помощью системы позже.
Надеюсь, это поможет.