web-dev-qa-db-ja.com

ファイルフィールドを使用したノードの一括保存

Drupalサイトの一括アップロード機能の作成を進めています。フラッシュを使用すると、ファイルを処理できる特定のURLにファイルをアップロードできます。

私がしたいことは、ファイルをアップロードすることだけではなく、CCKでセットアップされたファイルフィールドに保存されたファイルを使用して、特定のタイプのノードを作成することです。これらはオーディオファイルであるため、file-fieldがファイルを処理することが重要です。そのため、getid3モジュールで追加のメタデータを提供できます。

コード/ドキュメントを確認しましたが、最初のラウンドでこれを処理する方法を理解できませんでした。理想的には、私が見逃したいくつかの機能があり、それらのほとんどを私のために処理できます。

誰かがこれについての経験を持っているなら、私はこの問題にどのように取り組むかについていくつかの指針を高く評価します。

5
googletorp

非常に簡単です。コンテンツタイプに必須フィールドを設定してから、次のようなコードを使用します。

$file = new stdClass();
$file->filename = basename($filepath);
$file->filepath = $filepath;
$file->filemime = $mime;
$file->filesize = filesize($filepath);

$file->uid = $uid;
$file->status = FILE_STATUS_PERMANENT;
$file->timestamp = time();
drupal_write_record('files', $file);


$node = new StdClass();
$node->type = 'type';
$node->body = 'body';
$node->title = 'title';
$node->field_file = array(
  array(
    'fid' => $file->fid,
    'title' => basename($file->filename),
    'filename' => $file->filename,
    'filepath' => $file->filepath,
    'filesize' => $file->filesize,
    'mimetype' => $mime,
    'data' => array(
      'description' => basename($file->filename),
    ),
    'list' => 1,
  ),
);
$node->uid = 1;
$node->status = 1;
$node->active = 1;
$node->promote = 1;
node_save($node);
5
Decipher