Ir para conteúdo


Foto

Forçar download de arquivo no browser

download file download de arquivo arquivo

Melhor Resposta ratamiette , 14 April 2016 - 18:08

Boa tarde,

 

Consegui. Segui este tópico : http://forum.extjs.c...vo/?hl=download 

 

e este aqui https://joekuan.word...nloading-files/

 

Segue a solução caso alguém precise:

 

No Javascript utilizei:

function downloadFile(filename) {
	var body = Ext.getBody();

	// create a hiddle frame
	var frame = body.createChild({
		tag: 'iframe',
		cls: 'x-hidden',
		id: 'iframe',
		name: 'iframe'
	});

	//create hidden form with download as action
	   
	var form = body.createChild({
		tag: 'form',
		cls: 'x-hidden',
		id: 'form',
		method: 'POST',
		action: 'index.php/teste/downloadFile',
		target: 'iframe'
	});

	// to set the parameter through a hidden field
	var inputpara = form.createChild({
		tag: 'input',
		type: 'hidden',
		name: 'filename', // parameter name
		value: filename  // parameter value
	});

	// submit the form to initiate the downloading
	form.dom.submit();
}

No PHP : 

 

public function downloadFile(){
       ...

        if(isset($filename)){

            header("Content-Disposition: attachment; filename=\"" . basename($filepath) . "\"");
            header("Content-Type: application/force-download");
            header("Content-Description: File Transfer");
            header("Content-Length: " . filesize($filepath));
            readfile($filepath);
        }
    }
Visualizar todo o conteúdo do post


  • Por favor, faça o login para responder
1 resposta neste tópico

#1 ratamiette

ratamiette

    Member Avançado

  • Membros
  • PipPipPip
  • 73 posts

Postado 14 April 2016 - 16:56

Boa tarde a todos,

 

Estou tentando forçar o download de um arquivo txt no google chrome, porém não estou conseguindo. Dei uma olhada em outros tópicos aqui ... mas sem sucesso..

Será que está faltando alguma coisa?

 

Neste tópico http://forum.extjs.c...?hl=download, 

 

uma solução foi inserir esta linha abaixo, porém não sei como implementar isso dentro do meu handler. Pois não preciso fazer um ajax request para recuperar o arquivo.

 

this.response.setHeader("Content-disposition", "attachment; filename = " + filename);

return file;
 
handler: function(grid, rowIndex, colIndex, item, e, rec){
	var rec = grid.getStore().getAt(rowIndex),
		pathFile = "uploads/files/"+rec.get('file_name');

	//tenta buscar o iframe
	var elIframe = Ext.get('iframe-dowload');

	if(!elIframe) //se não existir
	{
	//cria
	elIframe = Ext.getBody().createChild({
		 tag	: 'iframe'
		,style	: 'display:none;'
		,id	: 'iframe-dowload'
		,src	: Ext.BLANK_IMAGE_URL
	});
	}

	//seta src, o que irá disparar o download
	elIframe.dom.src = pathFile;

Obrigada!


ratamiette

#2 ratamiette

ratamiette

    Member Avançado

  • Membros
  • PipPipPip
  • 73 posts

Postado 14 April 2016 - 18:08   Melhor Resposta

Boa tarde,

 

Consegui. Segui este tópico : http://forum.extjs.c...vo/?hl=download 

 

e este aqui https://joekuan.word...nloading-files/

 

Segue a solução caso alguém precise:

 

No Javascript utilizei:

function downloadFile(filename) {
	var body = Ext.getBody();

	// create a hiddle frame
	var frame = body.createChild({
		tag: 'iframe',
		cls: 'x-hidden',
		id: 'iframe',
		name: 'iframe'
	});

	//create hidden form with download as action
	   
	var form = body.createChild({
		tag: 'form',
		cls: 'x-hidden',
		id: 'form',
		method: 'POST',
		action: 'index.php/teste/downloadFile',
		target: 'iframe'
	});

	// to set the parameter through a hidden field
	var inputpara = form.createChild({
		tag: 'input',
		type: 'hidden',
		name: 'filename', // parameter name
		value: filename  // parameter value
	});

	// submit the form to initiate the downloading
	form.dom.submit();
}

No PHP : 

 

public function downloadFile(){
       ...

        if(isset($filename)){

            header("Content-Disposition: attachment; filename=\"" . basename($filepath) . "\"");
            header("Content-Type: application/force-download");
            header("Content-Description: File Transfer");
            header("Content-Length: " . filesize($filepath));
            readfile($filepath);
        }
    }

ratamiette





Tópicos que também usam as tags download, file, download de arquivo, arquivo:

0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos