Drupal 7 - загрузка изображения программно - PullRequest
3 голосов
/ 23 ноября 2011

Я хотел бы загрузить изображение в пользовательский модуль.Изображение должно быть сохранено и переименовано при необходимости.Позже я хочу иметь возможность отображать изображение где-то в моей форме или где я хочу.

Мой текущий код:

function my_module_name_new_form()
{
 ....

$form['icon'] = array
(
    '#type' => 'file',
    '#title' => t('Icon'),
    '#description' => t('Click "Chose File" to select an image to upload.')
);

 ....
}

В хуке отправки у меня есть:

// Icon
$filename = $form_state['values']['icon'];
$dest = file_build_uri($filename); 
file_save_data('My data', $dest, FILE_EXISTS_RENAME); 

Ничего не происходит ... Я также не нашел ни одного совместимого с Drupal 7.x модуля, который каким-то образом облегчает жизнь.

Решение:

//----------------------------
// Icon
//----------------------------  
$dest_dir = file_default_scheme() . '://';// Note: file_directory_path() was removed in Drupal 7.x. // $dest_dir contains the destination directory for the file. 

$validators = array('file_validate_extensions' => array('jpg png gif'));

//Save file
if ($file = file_save_upload('icon', $validators, $dest_dir))
{
    $filename = $file->filename;        
    $file_content = file_get_contents($dest_dir.$filename); // Fatal error: Cannot access empty property in C:\xampp\htdocs\drupal\modules\custom\achievements\achievements.module on line 446
}
else
{
    form_set_error('icon', 'Could not upload file.');
}
// To display the image: // die('<IMG SRC="'.file_create_url($dest_dir.$filename).'"/>');
//----------------------------  

Ответы [ 2 ]

5 голосов
/ 18 августа 2012

Я должен был сделать это недавно.Вот чем я закончил.Что означает сохранение изображения в поле изображения без использования друпал.

2 голосов
/ 23 ноября 2011

Попробуйте:

 $validators = array(
    'file_validate_extensions' => array('jpg png gif'),
  );
  //Save file
  if ($file = file_save_upload('icon', $validators, $your_file_destination)) {
    $file_content = file_get_contents($file->filepath);
  }
  else{
    form_set_error('icon', 'Could not upload file.');
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...