Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guicampos1

Após gerar CSV fazer o download do mesmo

Recommended Posts

O que preciso, é que após a geração do CSV, ele faça o download do arquivo automaticamente.

Já tentei de tudo, porém nada foi possível

Segue o código:

<?php

	$acao = $_POST["acao"];
	
	if($acao === "baixar"){
		
		$diretorio = "csv/";
		$nome = date("Y-m-d-H-i-s");
		$nome =  'download-'.$nome.'.csv';
		$arquivo = $diretorio . $nome;
		$dados = '';

		$query = mysql_query("SELECT * FROM intranet_newsletter ORDER BY nome, email ASC")or die('Falha na instrução SQL: ' . mysql_error());
			while($ln=mysql_fetch_assoc($query)){
				$dados .= "'".$ln['nome']."'";
				$dados .= ",'".$ln['email']."'";
				$dados .= "\n"; 
			}

			if(fwrite($file=fopen($arquivo,'w+'),$dados)) {  

				fclose($file);

			}

	}

?>

Dessa forma ele está criando o arquivo e salvando na pasta "csv".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria isso?

<?php


$acao = $_POST["acao"];


if($acao === "baixar"){


$diretorio = "csv/";
$nome = date("Y-m-d-H-i-s");
$nome =  'download-'.$nome.'.csv';
$arquivo = $diretorio . $nome;
$dados = '';


$query = mysql_query("SELECT * FROM intranet_newsletter ORDER BY nome, email ASC")or die('Falha na instrução SQL: ' . mysql_error());
while($ln=mysql_fetch_assoc($query)){
$dados .= "'".$ln['nome']."'";
$dados .= ",'".$ln['email']."'";
$dados .= "\n"; 
}


if(fwrite($file=fopen($arquivo,'w+'),$dados)) {  


$output = sprintf('$arquivo', date('d-m-Y'));


$file = fopen('php://output', 'w+'); 
header('Content-type: application/octet-stream');  
header('Content-disposition: attachment; filename="'. $output.'"');


fclose($file);


}


}


?>

Não consegui fazer baixar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A algum tempo atrás, quando eu estava aprendendo PHP, fiz uma classe para efetuar download tanto de arquivos, quanto de textos gerados dinamicamente sem a necessidade de criar um arquivo para isso.

 

Acredito que ainda esteja funcionando nas versões mais recentes do PHP

<?php
/**
 *  Classe para o download de arquivos ou textos
 *  Created on 2013-07-20
 *  PHP version 5.3.0 and later
 *  @author Carlos Coelho <carloscoelho.info@gmail.com>
 *  @version 0.1
 */
class Download
{
    /**
     * O nome da função que
     * mede o tamanho em bytes
     * do conteúdo do download
     * @var string 
     */
    private $length;
    /**
     * O nome da função que
     * faz a impressão de tela
     * @var string 
     */
    private $output;
    /**
     * O caminho do arquivo
     * ou conteúdo para download
     * @var string 
     */
    private $path;
    /**
     * Armazena o nome do 
     * download
     * @var string 
     */
    private $filename;
    /**
     * Construtor da classe Download
     * @param mixed $path Um arquivo ou conteúdo 
     * para download
     * @param string $filename O nome que receberá o
     * arquivo ou conteúdo na hora do download
     * @access public
     * @return void 
     */
    public function __construct( $path, $filename = null )
    {
        $this->path     = $path;        
        $this->length   = 'mb_strlen';                
        $this->output   = 'printf';
        $this->filename = ( string ) $filename;
        $this->prepare( );
        $this->headers( );
    	call_user_func( $this->output, $this->path );
    	flush( );
    }
    /**
     * Prepara os dados 
     * para efetur o download
     * @access private
     * @return void 
     */
    private function prepare( )
    {
        if( is_file( $this->path ) )
        {
            if( empty( $this->filename ) )
            {
                $this->filename = basename( $this->path );
            }
            
            $this->length = 'filesize';
            $this->output = 'readfile';
        }
    }
    /**
     * Define os headers para 
     * forçar o download 
     * @access private
     * @retrun void
     */
    private function headers( )
    {
        header( 'Content-Type: application/force-download' );
        header( 'Content-type: application/octet-stream' );
    	header( sprintf( 'Content-Length: %u', call_user_func( $this->length, $this->path ) ) );
    	header( sprintf( 'Content-disposition: attachment; filename="%s"', $this->filename ) );
    	header( 'Pragma: no-cache' );
    	header( 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0' );
    	header( 'Expires: 0' );
    }
}
?>

Para efetuar o download:

// download de uma string
new Download( 'Hello World!', 'file.txt' );

// download de um arquivo
new Download( 'file.xml' );

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.