为什么这个文件字段不能保存在节点对象上?

问题描述:

随着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, 
     ), 
    ); 
+0

好的,但是如果你实际上没有上传,那么你如何使用file_save_upload函数呢?我已经将文件放在正确的位置。我必须手动在文件表中创建一个条目吗? – coderama 2010-10-14 12:16:28

+0

您是否尝试以编程方式创建节点对象?因为我的解决方案是为了这个目的。我的意思是:你有一个自定义表单,在这里你可以上传你的文件和其他信息。一旦他们点击保存,就可以用传递的信息构建一个新的$ node对象。如果您想要实现其他功能,请更好地解释背景:) – Bladedu 2010-10-14 13:40:03