невозможно загрузить несколько изображений в торт php - PullRequest
0 голосов
/ 13 января 2019

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

<div class="from-control-div">
 <?php echo $this->Form->create('Post', array('type' => 'file','id'=>'unitform','class'=>'form-horizontal','role'=>'form','url' => array('controller' => 'posts', 'action' => 'savepost')));?>
<div class="from-div-bottom">
    <div class="form-group">
        <label class="col-sm-4 control-label">File Upload</label>
        <div class="col-sm-6" id="more-files">
   <?php echo $this->Form->input('files.',array('type'=>'file','label' => false,'placeholder' => 'Upload images','id'=>"inputFile",'multiple','onchange'=>'readURL(this)'));?>
            <!--<div id="fileList"></div>-->
        </div>
        <a class="col-sm-2 pull-right" style="font-weight:bold;" id="add-more"><i class="fa fa-plus"></i> Add More</a>
    </div>
</div>  
  </form>

После этого вот мой контроллер. Если я печатаю print_r ($ data); тогда вывод - один массив. Нет множественного массива. Любая помощь для меня

Array ( [0] => Array ( [name] => download.jpg [type] => image/jpeg [tmp_name] => /tmp/phpX3Oy32 [error] => 0 [size] => 12988 ) )



      public function savepost() {
        if (count($this->request->data) > 0) {
      $fileNames = '';
            if (isset($this->request->data['Post']['files']) && count($this->request->data['Post']['files']) > 0) {
              $data=$this->request->data['Post']['files'];
                print_r($data);
             $fileNames = array();
                foreach ($this->request->data['Post']['files'] as $filedata) {
          if(isset($filedata["name"]) && ($filedata["name"] !='')){
            $upload_dir = FILE_UPLOAD_PATH;
            $original = explode('.', $filedata["name"]);
            $extension = array_pop($original);
            $newname = time() . '.' . $extension;
            if (file_exists($upload_dir . $newname)) {
              unlink($upload_dir . $newname);
            }
            if (move_uploaded_file($filedata["tmp_name"], $upload_dir . $newname)) {
              $fileNames[] = $newname;
                        print_r($fileNames);
            }
          }
                }
    }
  }
}

1 Ответ

0 голосов
/ 15 января 2019

публичная функция savepost () {

if(isset($this->request->data['multifiles'])){
    $file_name_all="";
    for($i=0; $i<count($this->request->data['multifiles']); $i++){
        if(!empty($this->request->data['multifiles'][$i]['name'])){
            $file = $this->request->data['multifiles'][$i];
            $file['name'] =  time() . '-' . str_replace(' ', '_', $file['name']); 
            $uploadPath = WWW_ROOT . 'img/ ';
            $fileName =  $file['name'];
            $uploadFile = $uploadPath.$fileName;
            $file_name_all.= $file['name'].",";
            if($file['name']){
                move_uploaded_file($file['tmp_name'], $uploadFile);
            }  
        }
    }
}

}

в моем коде это работает.

...