Skip to content

CakePHP FileUpload Component

by Vinícius Krolow on maio 1st, 2009

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'));
	}
One Comment

Trackbacks & Pingbacks

  1. Twitted by krolow

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS