私は、ファイル(ファイル)とリスト(ステータス)の2つのカスタムフィールドを持つカスタムコンテンツタイプを持っています。Drupal - file_managedでのエントリの作成
私は実行して、ステータスの値を設定することができます。
は私が既にサーバー上にあるファイルのfield_fileとfile_managed(コア表)のエントリを作成したいです。私はすでにファイルのMIMEタイプ、サイズ、パスを知っています。
これを達成するための適切な方法は何ですか?
私は、ファイル(ファイル)とリスト(ステータス)の2つのカスタムフィールドを持つカスタムコンテンツタイプを持っています。Drupal - file_managedでのエントリの作成
私は実行して、ステータスの値を設定することができます。
は私が既にサーバー上にあるファイルのfield_fileとfile_managed(コア表)のエントリを作成したいです。私はすでにファイルのMIMEタイプ、サイズ、パスを知っています。
これを達成するための適切な方法は何ですか?
私は手動でファイルオブジェクトをインスタンス化し、(例として、画像ファイルを使用して)、それをコミットする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);
あなたはその後、Drupalは、あなたのモジュールは既得権を持って知っているようにfile_usage_add()
を呼び出す必要がありますこのファイル(あなたの$node
オブジェクトからnid
を使用して):
file_usage_add($file, 'mymodule', 'node', $node->nid);
最後に、あなたがノードにファイルを追加することができます
$node->field_file[$node->language][] = array(
'fid' => $file->fid
);
希望します。
ありがとう、それは多くの助けになります。 – djdy
もfile_managedテーブルにありますか? –
いいえ、ファイルはサードパーティアプリケーション経由でサーバーに送られます。ファイルに関する情報は、Drupalが認識しているXMLファイルを介してアクセスできます。 XMLからのデータはfile_managedとfield_fileに入れる必要があります。 – djdy