是否可以通过编程方式将图像添加到节点?在Drupal 7中以编程方式将图像文件附加到节点上
回答
下面是使用示例代码,你可以用node_save
$filepath = drupal_realpath('misc/druplicon.png');
// Create managed File object and associate with Image field.
$file = (object) array(
'uid' => 1,
'uri' => $filepath,
'filemime' => file_get_mimetype($filepath),
'status' => 1,
);
// We save the file to the root of the files directory.
$file = file_copy($file, 'public://');
$node->field_image[LANGUAGE_NONE][0] = (array)$file;
`
是的,当你保存它时,使它成为$ node对象的一部分。使用node_save()保存它。
一种更简单的方式来使用:
$filename = 'image.txt';
$image = file_get_contents('http://www.ibiblio.org/wm/paint/auth/gogh/gogh.white-house.jpg');
$file = file_save_data($image, 'public://' . $filename, FILE_EXISTS_RENAME);
$node->field_image = array(LANGUAGE_NONE => array('0' => (array)$file));
下面是我绊倒了一会儿一个额外的位:这将附加图像到节点,如果你添加图像,那么你没事。但是,如果你是更新图像,你所关心的一个网页上显示的话,则()之前调用node_save需要一个额外的步骤:
image_path_flush($node->field_image['und'][0]['uri']);
这将重新生成所有的这种形象的风格。
这是对我工作:
$file_temp = file_get_contents('public://someimage.jpg');
// Saves a file to the specified destination and creates a database entry.
$file_temp = file_save_data($file_temp, 'public://' . 'someimage.jpg', FILE_EXISTS_RENAME);
$node->field_page_image = array(
'und' => array(
0 => array(
'fid' => $file_temp->fid,
'filename' => $file_temp->filename,
'filemime' => $file_temp->filemime,
'uid' => 1,
'uri' => $file_temp->uri,
'status' => 1,
'display' => 1
)
)
);
Drupal社区文档为此提供了稍微不同的方式。 https://www.drupal.org/node/2301425。它说'file_usage_add($ file,'file','node',$ node-> nid);'这样做也必须完成。 – rineez 2015-04-25 07:27:41
您可能还想手动取消临时文件的链接(如果不再需要)。否则随着时间的推移,它将积累成为存储空间的巨大浪费。 – rineez 2015-04-25 07:40:23
这种情况下没有临时文件。该图像仅被下载到内存,然后存储在目标目标中。 – Brian 2017-11-02 16:44:55
$node->field_image[LANGUAGE_NONE][0] = (array)$file;
我试图与一个多语种的网站。它相当失败......但可怕。 我不得不指定有问题的语言。简单地说,这个工作不是:
$node->field_image['en'][0] = (array)$file;
没有它,附加的文件是在“视图”屏幕查看,但不能在“编辑”屏幕。
这个工作对我来说:
define('DRUPAL_ROOT', $_SERVER['DOCUMENT_ROOT']);
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$node = node_load(99);
$filename = 'image.txt';
chdir(DRUPAL_ROOT);
$image = file_get_contents('http://www.ibiblio.org/wm/paint/auth/gogh/gogh.white-house.jpg');
$file = file_save_data($image, 'public://' . $filename, FILE_EXISTS_RENAME);
$node->field_imagen_producto = array(LANGUAGE_NONE => array('0' => (array)$file));
node_save($node);
只是要在这里贴上我的解决方案,以及,我需要建立一个新的节点,并上传图片编程。
$filepath = variable_get('file_public_path') . '/xmas_banner.jpg';
$file_temp = file_get_contents($filepath);
$file_temp = file_save_data($file_temp, file_default_scheme() . '://' .'xmas_banner_nl.jpg', FILE_EXISTS_RENAME);
$node = new stdClass();
$node->type = 'carousel'; // custom content type
$node->title = 'XMAS NL';
$node->field_banner_image[LANGUAGE_NONE][0] = (array) $file_temp;
$node->uid = 1;
$node->status = 0;
$node->active = 0;
$node->promote = 0;
node_save($node);
- 1. 以编程方式将图像添加到Drupal节点
- 2. 如何以编程方式将图像添加到Drupal节点?
- 3. 在Drupal 7中以编程方式将文件附加到节点,但文件名为空?
- 4. 以编程方式上传和保存文件到Drupal节点
- 5. 如何以编程方式将表单添加到Drupal 7中的节点?
- 6. 以编程方式编辑Drupal节点中的图像
- 7. 以编程方式将视图/块添加到Drupal 7中的tpl.php文件中
- 8. Drupal 7 - 以编程方式向节点添加自由标记
- 9. drupal 7 - 通过代码将文件附加到节点
- 10. 如何以编程方式在Drupal节点视图上修改节点输出?
- 11. Drupal 7 - 以编程方式创建节点,添加嵌入到字段的youtube
- 12. 以编程方式将图像附加到Ellipse
- 13. Drupal 7 - 以编程方式标记节点
- 14. 以编程方式将子节点添加到xamdatatree节点
- 15. 将SimpleXMLElement保存为Drupal 7中的xml文件节点附件
- 16. 以编程方式在android中将文本添加到图像
- 17. 以编程方式添加节点
- 18. Drupal 7以编程方式加载配置文件2
- 19. 以编程方式将视图添加到drupal 7中的自定义模块
- 20. Drupal 7.使用PHP将图像添加到节点
- 21. 使用xmlrpc将图像添加到drupal 7节点#
- 22. 附加js文件以阻止drupaL 7?
- 23. 以编程方式定义附加点
- 24. 以编程方式将第二个进程附加到.NET上
- 25. 以编程方式将文件添加到jquery文件上传
- 26. 以编程方式在Drupal 7中添加评论
- 27. 如何以编程方式在drupal 7中添加语言?
- 28. 如何将本地文件附加到Drupal节点
- 29. Drupal 7 - 是否可以将现有文件附加到新创建的节点上?
- 30. 以编程方式在网页上添加可点击图像
+1。无论出于何种原因,我还必须在$ file数组中添加''display'=> 1',否则我得到一个约束冲突,即field_doc_file_display为NULL。这是为了文件而不是图像,这可能是不同的。 – feedbackloop 2012-02-02 19:55:31
有一种方法可以将Alt或Title添加到图像中使用此方法? – Shyghar 2013-08-07 08:50:10
+1对于LANGUAGE_NONE – saadlulu 2013-09-26 11:08:26