[ Dica Zend ] – Baixar Arquivos com Zend Framework

Estava fazendo um site para uma comunidade que precisava oferecer informativos para download.
De onde veio a necessidade de criar um link para download http://projeto.localhost/baixar/arquivo/nome/:ARQUIVO
Peguei um código que tinha em PHP puro e portei para o Zend.
A solução ficou como segue:

É preciso criar o arquivo controlador BaixarController.php e seguir o padrão conhecido do ZF1 e adicionar o método arquivoAction() que não precisa de um arquivo correspondente na pasta script/views/baixar pois não estamos retornando nada no View da aplicação.


class BaixarController extends Zend_Controller_Action
{
	public function arquivoAction()
	{
            $arquivo = $this->getRequest()->getParam('nome);
	    header('Content-Type: application/pdf');
	    header('Content-Disposition: attachment; filename="$arquivo"');
	    readfile('arquivos/' . $arquivo);
 
	    $this->view->layout()->disableLayout();
	    $this->_helper->viewRenderer->setNoRender(true);
	}	
 
}

Nas linhas:


    $this->view->layout()->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);

Nós desabilitamos o Layout e não exibimos nada, por isto não precisamos criar o arquivo view/scripts/baixar.phtml.

Note que eu utilizei “application/pdf” pois estou tenho certeza que os arquivos estão em PDF.

Neste caso, eu recomendo que você faça a validação utilizando alguma função ou método próprio. Neste link http://snipplr.com/view/11451/ há um exemplo de como obter MIME_TYPE do arquivo baseado numa lista passada pelo usuário. No seu caso, você pode utilizar as que você tem certeza que estão no teu sistema.

IMPORTANTE:Como você deve ter notado, eu utilizei o parametro “nome” para obter o arquivo neste exemplo. Na minha aplicação eu criei uma rota. Então sinta-se à vontade para construir o URL e a Rota que melhor se encaixa com seu projeto

Bom é isto ai!

Abraço do Giba!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *