CakePHP FileUpload Component
Fazendo upload facilmente com o CakePHP, isso é proposto com o FileUpload o download do código do componente pode ser feito aqui, o mesmo deve ser salvo dentro da pasta de sua aplicação em, controllers/components com o nome de file_upload.php.
Para usar o mesmo é muito simples no controller que vamos fazer o upload usamos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public function beforeFilter() { $this->FileUpload->fileModel = 'Attachment'; $this->FileUpload->fields = array('name'=> 'file_name', 'type' => 'file_type', 'size' => 'file_size'); $this->FileUpload->allowedTypes = array('image/jpeg', 'text/plain', 'image/png', 'application/msword', 'application/zip', 'image/gif', 'image/bmp', 'application/excel', 'application/pdf', ); $this->FileUpload->uploadDir = 'files' . DS . 'attachments'; parent::beforeFilter(); } |
Onde $this->FileUpload->fileModel é o modelo que referencia onde vai ser salvo as informações do arquivo do upload, caso não seja necessário salvar no banco passe null para esse atributo.
$this->FileUpload->fields se referencia as campos do banco de dados que vai salvar as informações do arquivo.
$this->FileUpload->allowedTypes um array com os tipos de mime types permitidos para fazer o upload.
$this->FileUpload->uploadDir diretório no file system onde deve ser salvo o arquivo.
No seu action de cadastramento teremos:
1 2 3 4 5 6 7 8 9 | public function admin_add() { if (!empty($this->data)) { if ($this->Attachment->validates() && $this->FileUpload->success) { $this->Session->setFlash(__('The Attachment has been saved', true)); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('The Attachment could not be saved. Please, try again.', true)); } } } |
Para editar o mesmo processo pode ser usado.
Para deletar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public function admin_delete($id = null) { if (!$id) { $this->Session->setFlash(__('Invalid id for Attachment', true)); $this->redirect(array('action'=>'index')); } $attachment = $this->Attachment->findById($id); if ($this->FileUpload->removeFile($attachment['Attachment']['file_name'])){ if ($this->Attachment->del($id)) { $this->Session->setFlash(__('Attachment deleted', true)); } } else { $this->Session->setFlash(__('Not found the file', true)); } $this->redirect(array('action'=>'index')); } |
Trackbacks & Pingbacks