gpt4 book ai didi

image - Drupal 7 - 以编程方式上传图像

转载 作者:行者123 更新时间:2023-12-01 10:08:21 24 4
gpt4 key购买 nike

我想在自定义模块中上传图像。如果需要,必须永久保存图像并重命名。稍后我希望能够在表单上的某处或任何我想要的地方显示图像。

我当前的代码:

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.')
);

....
}

在提交 Hook 中,我有:
// 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).'"/>');
//----------------------------

最佳答案

我最近不得不这样做。这就是我最终得到的。这是在不使用drupal表单的情况下将图像保存到图像字段。

if(isset($_FILES['image'])){

$node = node_load($nid);

//Get the uploaded file from the temp directory.
$image = file_get_contents($_FILES['image']['tmp_name']);

//Create the directory if it does not already exist, otherwise check the permissions
$directory = 'public://my-image-folder';
file_prepare_directory($directory, FILE_CREATE_DIRECTORY);

//Saves a file to the specified destination and creates a database entry.
$file = file_save_data($image, 'public://my-image-folder/'.$_FILES['image']['name'], FILE_EXISTS_RENAME);

//Set the file status to permanent so it is not deleted in next cron run
$file->status = FILE_STATUS_PERMANENT;
file_save($file);

//Now we have a saved file and an object for it, just need to add it to the node's image field.
$node->field_my_image_field[$node->language][0] = (array)$file;

node_save($node);
}

关于image - Drupal 7 - 以编程方式上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com