Узлы массового сохранения с полем файла


Я в процессе создания функции массовой загрузки для сайта Drupal. Используя flash, я могу загружать файлы на определенный URL-адрес, который должен обрабатывать файлы.

Что я хочу сделать, так это не просто загрузить файлы, а создать узел определенного типа с файлом, сохраненным в файловом поле, которое было настроено с помощью CCK. Поскольку это аудиофайлы, важно, чтобы файловое поле обрабатывало файлы, поэтому дополнительные метаданные могут быть предоставлены вместе с модуль getid3.

Я взглянул на код/документ, но в первом раунде не смог понять, как с этим справиться. В идеале, есть какая-то функция, которую я пропустил, которая может справиться с большей частью этого для меня.

Если у кого-то есть опыт в этом, я был бы признателен за некоторые указания о том, как подойти к этому вопросу.

 5
Author: kiamlaluno, 2011-03-03

1 answers

Это довольно просто, настройте свой тип контента с необходимыми полями, затем вы хотите использовать код, подобный этому:

$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
Author: Decipher, 2011-03-03 10:12:27