Здравствуйте!
Нужно создать модуль, который кроме своего основного функционала, будет загружать файлы определенного расширения на сервер.
Использую функцию file_save_upload.
Код:
return array('access mymodule content', 'access administration pages');
}
function mymodule_menu() {
$items = array();
$items['admin/settings/mymodule'] = array(
'title' => t('Mymodule'),
'description' => 'Description',
'page callback' => 'show_form',
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function mymodule_addform() {
$form = array();
$form['fieldset'] = array(
'#weight' => '0',
'#collapsed' => '0',
'#type' => 'fieldset',
'#collapsible' => '1',
'#title' => t('Upload file'),
);
$form['fieldset']['uploadfile'] = array(
'#weight' => '0',
'#size' => '30',
'#type' => 'file',
'#title' => t('File'),
);
$form['fieldset']['submit'] = array(
'#weight' => '0',
'#size' => '30',
'#type' => 'submit',
'#value' => t('Add'),
);
return $form;
}
function show_form() {
return drupal_get_form('mymodule_addform');
}
function mymodule_addform_validate($form, &$form_state) {
$validators = array();
$validators = array('file_validate_extensions' => array('jpg'));
$dir = file_directory_path() . '/mymodulefiles';
$replace = FILE_EXISTS_RENAME;
if(file_check_directory($dir, 1)) {
$file = file_save_upload('uploadfile', $validators, $dir, $replace);
} else {
drupal_set_message(t('Can\'t acces directory'));
}
}
function mymodule_addform_submit($form, &$form_state) {
if ($file) {
drupal_set_message(t('New file %name uploaded to %path.', array('%name' => $file->filename, '%path' => $file->filepath)));
} else {
drupal_set_message(t('File was not uploaded'));
}
}
Эта форма не работает. Подскажите пожалуйста в чем проблема. Сторонний модуль на этом же сайте отлично загружает файлы, так что проблема не в настройках php и размере загружаемого файла (8мб, а загружаю картинку).
Заранее благодарен!
Комментарии
http://api.drupal.org/api/drupal/developer--topics--forms_api_reference....
http://drupal.org/node/111782
Спасибо, помогло!
У меня (на локалхосте) загружает файл но пишет
File was not uploaded
НЕМОГУ ПОНЯТЬ ОТКУДА ЭТА ОШИБКА
И я изменил
<?php $replace = FILE_EXISTS_RENAME; ?>
на
<?php $replace = FILE_EXISTS_REPLACE; ?>
код?
код вот в этом блоге