CakePHP Upload/Download Component
- Posted at 2009. 7. 14. 18:01
- Posted by 루지메이앙
- Filed under PHP
');
}
//-->
|
');
}
//-->
|
*** UPLOAD ***
[STEP 0] form->create시 , 'type' => 'file' 옵션을 추가해야함
[STEP 1] view에서 입력받을 때 <input type="file" name='uploadedFile[]' /> 를 사용하여 다른 form값들과 같이 입력받는다 (name은 변경하면 안됨.)
[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->FileManager->upload($this->params['form']['uploadedFile'], '모델명', $this->모델명->id);
를 추가하여 준다. $this->모델명->id는 방금 삽입된 글의 id가 리턴되므로
이것에 속한 attachedFile레코드를 만들 수 있게 된다.
이것에 속한 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
*** Component ***
/app/controllers/file_archives_controller.php
/app/controllers/components/file_manager.php