Перейти к основному содержанию

Webform сохранение файла оправленного через ajax-форму

Отправлено said от пн, 05/30/2016 - 11:04

Меняю тип поля файла в вебформе с помощью hook_form_alter()

function mymodule_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == 'my_webform') {
        $form['submitted']['requisites']['#type'] = 'file';
    }
}

При сабмите формы, файл будет отправляться. Теперь в hook_webform_submission_presave() сохраняю этот файл

function mymodule_webform_submission_presave($node, &$submission) {
    if (isset($_FILES['files']['tmp_name']['submitted']) && is_file($_FILES['files']['tmp_name']['submitted'])) {
        $pathinfo = pathinfo($_FILES['files']['name']['submitted']);
        $pathinfo['extension'] = strtolower($pathinfo['extension']);
        $tmp_name = $_FILES['files']['tmp_name']['submitted'] . '.' . $pathinfo['extension'];
        rename($_FILES['files']['tmp_name']['submitted'], $tmp_name );
      $file = (object) array(
        'uid' => 1,
        'uri' => $tmp_name,
        'filemime' => file_get_mimetype($tmp_name ),
        'status' => 1,
      );
      $file = file_copy($file, 'public://');
      $position = 4; // это ид компонента (поля) в вебформе
      $submission->data[$position][0] = $file->fid;
    }
}

 

Теги