CakePHP Upload/Download Component

*** UPLOAD ***
[STEP 0] form->create시 , 'type' => 'file' 옵션을 추가해야함

[STEP 1] view에서 입력받을 때 <input type="file" name='uploadedFile[]' /> 를 사용하여 다른 form값들과 같이 입력받는다 (name은 변경하면 안됨.)
 
[STEP 2] controller의 상단에 var $components = array('FileManager'); 를 추가한다.
 
[STEP 3] $this->모델명->save(...)를 사용하여 글쓰기 완료 한 직후,
 
if(isset($this->params['form']['uploadedFile']))
    $this->FileManager->upload($this->params['form']['uploadedFile'], '모델명', $this->모델명->id);
 
를 추가하여 준다. $this->모델명->id는 방금 삽입된 글의 id가 리턴되므로
이것에 속한 attachedFile레코드를 만들 수 있게 된다.
모델명은 DB테이블 이름이 아닌 단수형 모델명으로 정확하게 입력하여 준다.
 
[STEP 4] update시에도 똑같이 동작한다. update직후 STEP 3과 동일한 로직을 추가 해준다.

 
 
*** DOWNLOAD ***
 
관련 attachedFile 테이블의 값을 불러온 다음,
/fileArchives/download/모델명/attachedFile의id 로 링크를 건다
 
예를 들어 CounselAnswer모델에 첨부된 id가 1인 파일을 불러오려면
/fileArchives/download/CounselAnswer/1
로 링크를 건다. 나머지는 컨트롤러 내부에서 알아서 처리된다


*** Component ***
/app/controllers/file_archives_controller.php
/app/controllers/components/file_manager.php


RSS :
Response