Howto: форма загрузки файла Drupal - PullRequest
8 голосов
/ 10 августа 2009

Мне трудно понять, как написать модуль с формой для загрузки файлов в Drupal 6. Может кто-нибудь объяснить это или указать мне хороший пример / документацию, обсуждающую это?

EDIT:

Вот что я пытаюсь сделать:

  1. Пользователь загружает .csv
  2. Модуль читает первую строку файла, чтобы получить поля
  3. Пользователь сопоставляет поля csv с полями db
  4. Каждая строка CSV сохраняется как узел (предварительно просмотрите его)

Пока я могу успешно выполнить 1, 2 и 4. Но неясно, как именно шаги должны взаимодействовать друг с другом ($ form_state ['redirect']? Как это следует использовать?) И каковы лучшие практики. И для 3, я должен сохранить это как данные сеанса?

Как передать данные файла между различными шагами?

Я знаю, что node_import существует, но он никогда не работал для меня, и мои запросы об ошибках игнорируются.

2-е РЕДАКТИРОВАНИЕ: Я использовал это в начале и в конце каждой страницы, которая была необходима для работы с файлом:

$file = unserialize($_SESSION['file']);
//alter $file object
$_SESSION['file'] = serialize(file);

Я не уверен, что это лучшие практики, но это работает.

1 Ответ

12 голосов
/ 10 августа 2009

Это не так уж сложно, вы можете увидеть некоторую информацию здесь . Пример формы с загрузкой только файла.

function myform_form($form_state) {
    $form = array('#attributes' => array('enctype' => 'multipart/form-data'));
    $form['file'] = array(
        '#type' => 'file',
        '#title' => t('Upload video'),
        '#size' => 48,
        '#description' => t('Pick a video file to upload.'),
    );
    return $form;
}

EDIT:

Теперь, чтобы сохранить файл, используйте функцию file_save_upload :

function myform_form_submit($form, $form_state) {
    $validators = array();
    $file = file_save_upload('file', $validators, 'path');
    file_set_status($file, FILE_STATUS_PERMANENT);
}

2-е РЕДАКТИРОВАНИЕ:

Есть много вопросов и способов сделать то, что вы описали. Я не буду вдаваться в фактический код того, как обрабатывать CSV-файл. Я хотел бы предложить, чтобы вы использовали идентификатор файла для отслеживания файла. Это позволит вам создавать URL-адреса, использующие fid, и использовать их для загрузки файла, с которым вы хотите работать. Чтобы перейти от своей формы к следующему шагу, вы можете использовать свойство формы # redirect , чтобы перевести ваших пользователей на следующий шаг. От этого действительно зависит то, как вы делаете вещи, что вам нужно делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...