2016-12-03 11 views
0

cakephp 3.3을 사용하고 있습니다. 단일 이미지를 업로드 할 수는 있지만 웹 루트/업로드 아래에 저장되지 않습니다. 여러 이미지를 업로드하고 저장하고 싶습니다. 그것을 어떻게 성취 할 수 있습니까? 입력 사항을 입력하십시오. 나는 PHP 프로그래밍과이 프레임 워크에 매우 익숙하다. 고마워! 같은 입력 필드 뭔가을 add.ctp에서cakephp를 사용하여 여러 이미지를 업로드하고 서버에 저장하는 방법 3.3

 `Images\add.ctp 
     <?= $this->Form->create($image,['type' => 'file']) ?> 
     <fieldset> 
     <legend><?= __('Add Image') ?></legend> 
     <?php 

     echo $this->Form->input('path',['type' => 'file']); 
     ?> 
     </fieldset>` 

     ImagesController\add 

     public function add() 
{ 
    $image = $this->Images->newEntity(); 
    if ($this->request->is('post')) { 
     $image = $this->Images->patchEntity($image, $this->request->data); 
     if ($this->Images->save($image)) { 
      $this->Flash->success(__('The image has been saved.')); 

      return $this->redirect(['action' => 'index']); 
     } else { 
      $this->Flash->error(__('The image could not be saved. Please, try again.')); 
     } 
    } 
    $properties = $this->Images->Properties->find('list', ['limit' => 200]); 
    $this->set(compact('image', 'properties')); 
    $this->set('_serialize', ['image']); 
} 

      Table\ImageTable.php 

     $validator 
     ->requirePresence('path', 'create') 
     ->notEmpty('path') 
    ->add('processImageUpload', 'custom', [ 
     'rule' => 'processImageUpload' 
    ]); 

public function processImageUpload($check = array()) { 
if(!is_uploaded_file($check['path']['tmp_name'])){ 
    return FALSE; 
} 
if (!move_uploaded_file($check['path']['tmp_name'], WWW_ROOT . 'img' . DS . 'images' . DS . $check['path']['name'])){ 
    return FALSE; 
} 
$this->data[$this->alias]['path'] = 'images' . DS . $check['path']['name']; 
return TRUE; 

}

+0

은 그렇게 무엇을하려고 않았다

echo $this->Form->input('path[]',['type' => 'file','multiple'=>'multiple']); 

그리고 컨트롤러의

이 같은 방법은 무엇인가 저장하기 멀리 ?? 진행 상황도 게시하십시오. –

+0

add.ctp에 입력 유형 파일을 만든 다음 move_uploded_file() 메서드를 사용하여 업로드를 처리했습니다. 위의 코드를 추가했습니다. 감사! – Mythri

답변

0

는 :

// $image = $this->Images->newEntity(); 
$images= $this->Articles->newEntities($this->request->data); 
if ($this->request->is('post')) { 
    // $image = $this->Images->patchEntity($image, $this->request->data); 
    if ($this->Images->saveMany($images)) { 
     $this->Flash->success(__('The image has been saved.')); 

     return $this->redirect(['action' => 'index']); 
    } else { 
     $this->Flash->error(__('The image could not be saved. Please, try again.')); 
    } 
} 
+0

감사합니다. 'Image'를 반복하여 각 이미지 세부 정보를 가져와 데이터베이스에 저장해야합니다. 또한 Webroot \ upload 아래에 이미지를 저장하십시오. $ images = $ this-> Images-> newEntities ($ this-> request-> data); 나에게 일련의 이미지를 줄 것이다. 하지만 파일 이름을 가져올 때 인덱스를 찾을 수 없습니다. – Mythri

+0

@ Manohar Khadka : 나는이 방법을 시도했다! 그것은 작동하지 않았다. 오류로 테이블 클래스 항목을 찾을 수 없습니다. – Mythri