2011-10-31 33 views
6

我有一個包含2個自定義字段的文件(文件)和列表(狀態)的自定義內容類型。Drupal - 在file_managed中創建條目

我可以做設置狀態值:

我要創建一個文件,該文件已經在服務器上field_file和file_managed(核心表)條目。我已經知道文件的MIME類型,大小和路徑。

實現此目的的正確方法是什麼?

+0

它也在file_managed表中嗎? –

+0

不,該文件通過第三方應用程序進入服務器。關於文件的信息可以通過Drupal知道的XML文件訪問。所以來自XML的數據需要放在file_managed和field_file中。 – djdy

回答

14

我將手動實例文件的對象,並使用file_save()提交它(使用映像文件爲例):

global $user; 
$file = new stdClass; 
$file->uid = $user->uid; 
$file->filename = 'image.png'; 
$file->uri = 'public://path/to/file/image.png'; 
$file->status = 1; 
$file->filemime = 'image/png'; 

file_save($file); 

您應該然後調用file_usage_add()讓Drupal的知道你的模塊在一個既得利益此文件(使用nid$node對象):

file_usage_add($file, 'mymodule', 'node', $node->nid); 

最後,你可以將文件添加到節點:

$node->field_file[$node->language][] = array(
    'fid' => $file->fid 
); 

希望可以幫到

+0

謝謝,這有很大的幫助。 – djdy