Как установить произвольное имя файла в загружаемом файле для l oop? - PullRequest
0 голосов
/ 27 марта 2020

Я хочу назначить произвольное имя для каждого файла, загруженного из формы, используя для l oop. Вот код контроллера.

if ($_FILES['userfile']['name'] && !empty($_FILES['userfile']['name'])) {

    $files = $_FILES['userfile']['name'];

    for ($i = 0; $i < count($files); $i++) {

      $filename = 'test'. ($i + 1);

      $_FILES['upload']['name'] = $_FILES['userfile']['name'][$i];
      $_FILES['upload']['type'] = $_FILES['userfile']['type'][$i];
      $_FILES['upload']['tmp_name'] = $_FILES['userfile']['tmp_name'][$i];
      $_FILES['upload']['error'] = $_FILES['userfile']['error'][$i];
      $_FILES['upload']['size'] = $_FILES['userfile']['size'][$i];

      $config['allowed_types'] = 'jpg|jpeg|png|pdf';
      $config['upload_path'] = './uploads/';
      $config['file_name'] = $filename;

      $this->load->library('upload', $config);

      if ($this->upload->do_upload('upload')) {
          $uploaded = $this->upload->data();

          var_dump($uploaded);

      } 
      else {
         var_dump($this->upload->display_errors());
      }
    }
}

Это работает нормально, когда я закомментировал config['file_name'], но когда я устанавливаю произвольное имя файла, у всех файлов есть имя файла test01.pdf. Я ожидаю имя файла test01.pdf, test02.pdf et c. Кто-нибудь может указать, как это исправить?

1 Ответ

0 голосов
/ 27 марта 2020

Извините за предыдущий ответ без проверки.

Пожалуйста, попробуйте обновить ваши коды следующим образом:

if ($_FILES['userfile']['name'] && !empty($_FILES['userfile']['name'])) {

    $files = $_FILES['userfile']['name'];
    //Load the upload library
    $this->load->library('upload');

    for ($i = 0; $i < count($files); $i++) {

      $filename = 'test'. ($i + 1);

      $_FILES['upload']['name'] = $_FILES['userfile']['name'][$i];
      $_FILES['upload']['type'] = $_FILES['userfile']['type'][$i];
      $_FILES['upload']['tmp_name'] = $_FILES['userfile']['tmp_name'][$i];
      $_FILES['upload']['error'] = $_FILES['userfile']['error'][$i];
      $_FILES['upload']['size'] = $_FILES['userfile']['size'][$i];

      $config['allowed_types'] = 'jpg|jpeg|png|pdf';
      $config['upload_path'] = './uploads/';
      $config['file_name'] = $filename;

      //Initialize new configs
      $this->upload->initialize($config);

      if ($this->upload->do_upload('upload')) {
          $uploaded = $this->upload->data();

          var_dump($uploaded);

      } 
      else {
         var_dump($this->upload->display_errors());
      }
    }
}

Codeigniter не загружает библиотеку дважды, если она уже загружена. Следовательно, вместо этого мы можем инициализировать наши новые конфиги.

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