为什么这个文件字段不能保存在节点对象上?
问题描述:
随着print_r的,我得到:为什么这个文件字段不能保存在节点对象上?
stdClass Object
(
[field_car_image] => Array
(
[0] => Array
(
[filename] => HERMAN 096.jpg
[filepath] => sites/default/files/HERMAN 096.jpg
[filemime] => image/jpeg
[filesize] => 933105
[status] => 1
)
)
..... // the rest is also on here
它将所有完美的其他数据,只是没有图像。之后:
node_object_prepare($node);
$node = node_submit($node);
node_save($node);
我在$ node对象上做了一个print_r,并且没有对“field_car_image”的引用。任何人都知道如何正确保存文件字段?
答
您错过了filefield数组中表格文件的fid(文件ID);要在drupal中正确上传文件,请确保使用file_save_upload函数http://api.drupal.org/api/function/file_save_upload/6
此代码显示如何将文件字段保存到节点中。
$node->field_car_image = array(0=>array(
'fid'=>$fid,//get this value from the file object returned by file_save_upload
'uid'=>$uid,//user ID
'filename'=>$filename,
'filepath'=>$filepath,
'filemime'=>$filemime,
'filesize'=>$filesize,
'status'=>$status,
'timestamp'=>$timestamp,
),
);
好的,但是如果你实际上没有上传,那么你如何使用file_save_upload函数呢?我已经将文件放在正确的位置。我必须手动在文件表中创建一个条目吗? – coderama 2010-10-14 12:16:28
您是否尝试以编程方式创建节点对象?因为我的解决方案是为了这个目的。我的意思是:你有一个自定义表单,在这里你可以上传你的文件和其他信息。一旦他们点击保存,就可以用传递的信息构建一个新的$ node对象。如果您想要实现其他功能,请更好地解释背景:) – Bladedu 2010-10-14 13:40:03