В скрипте ниже я хочу реализовать загрузку файлов из формы на странице. Все бы хорошо, но проблема возникает с функцией file_check_upload. Встречал ее во многих кодах на drupal.org, но в api ее не обнаружил. Может кто-то подскажет альтернативу этой функции в моем случае?
В друпле я новичок.
Благодарю.
function csv_import_menu() {
$items = array();
$items['admin/pagegood'] = array('title' => t('Тест'),
'page callback' => '_csv_import_page',
'page arguments' => array(1),
'access arguments' => array('access administration menu'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function csv_import_form() {
$form['#attributes'] = array('enctype' => "multipart/form-data");
$form['file_upload'] = array (
'#type' => 'file',
'#title' => t('Загрузить .csv файл'),
'#size' => 60,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Загрузить'),
);
return $form;
}
function csv_import_form_submit ($form_id, $form_values){
$file=file_check_upload('file_upload');
if ($file == true) {
$file=file_save_upload($file,'/upload');
drupal_set_message(t('Успешно!'));
}
else {
drupal_set_message(t('Не удалось загрузить!'));
}
}
function _csv_import_page($page){
return drupal_get_form('csv_import_form');
return ($page);
}
?>
Комментарии
А теперь ее код перекочевал в саму file_save_upload().
Как пример использования смотрим в модуль upload:
<?php
// Save new file uploads.
if (user_access('upload files') && ($file = file_save_upload('upload', $validators, file_directory_path()))) {
?>
gorr, натолкнули меня на мысль, спасибо :).
Но сейчас все-равно остается заминка. Появляется ошибка - "The selected file 'file' could not be uploaded, because the destination is not properly configured." То есть, он не хочет идти дальше папки tmp.
Насколько я понимаю - где-то не установлено конечное назначение файла. Подскажите что не так, если Вам известно.
Код для загрузки из форм теперь такой:
$form['#attributes'] = array('enctype' => "multipart/form-data");
return $form;
}
function csv_import_form_alter(&$form, $form_id){
if ($form_id == 'csv_import_form');{
$form['#attributes']['enctype'] = 'multipart/form-data';
$form['csv']=array('#type' => 'file',
'#title' => 'Загрузить .csv',
'#size' => 60,
);
$form['submit']=array(
'#type'=>'submit',
'#value'=>'Загрузить',
);
$form['#validate'][]='csv_validate_ext';
}
}
function csv_validate_ext (&$form, &$form_state){
$validators=array ();
if ($file=file_save_upload('csv',$validators)){
file_move($file,'/upload/1.csv');
}
else {
drupal_set_message(t('Не удалось загрузить!'));
}
}
Из вашего /upload/l.csv внутри папки для загрузок друпала получается так files//upload/l.csv, думаю ошибка в этом. Надо писать upload/l.csv.
gorr, ошибка моя была в том, что я создал папку upload не в sites/default/files, а в корне друпала.
Большое спасибо вам за помощь!