2011-10-31 18 views
6

Mam niestandardowy typ zawartości z 2 niestandardowymi polami: plik (plik) i lista (status).Drupal - tworzenie wpisów w file_managed

mogę ustawić wartość stanu wykonując:

Chcę utworzyć wpisy dla field_file i file_managed (tabeli podstawowej) do pliku, który jest już na serwerze. Znam typ MIME, rozmiar i ścieżkę pliku.

Jaki jest właściwy sposób, aby to osiągnąć?

+0

jest w file_managed tabeli, jak również? –

+0

Nie, plik trafia na serwer za pośrednictwem aplikacji innej firmy. Informacje o pliku są dostępne za pośrednictwem pliku XML, o którym Drupal wie. Tak więc dane z XML należy umieścić w file_managed AND field_file. – djdy

Odpowiedz

14

bym instancję obiektu plik ręcznie i używać file_save() żeby go popełnić (przy użyciu pliku obrazu jako przykład):

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

Następnie należy zadzwonić file_usage_add() pozwolić Drupal znać swoją moduł ma żywotny interes w tego pliku (za pomocą nid od obiektu $node):

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

Wreszcie można dodać plik do węzła:

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

nadzieję, że pomoże

+0

Dziękuję, to bardzo pomaga. – djdy