Visualizzazione risultati 1 fino 5 di 5

Discussione: Download di file via php, si chiamano sempre _download_ [era: _download_, _??]

  1. #1
    Guest

    Predefinito Download di file via php, si chiamano sempre _download_ [era: _download_, _??]

    Buna a tutti.

    Sto avendo dei problemi con un download, non so perchè mi scarichi il file in modo errato, ovvero ogni volta mi scarica il file chiamato " _download_ ":
    Questo è quanto ho scritto:
    Codice PHP:
    <?php
    $dir
    = '/download/';
    $file = $dir.$_POST['namefile'].$_POST['typefile'];
    if(
    $file == $dir)
    {
    $file = $dir."index.php";
    }
    $headle = fopen('file_work.txt','r');
    $content = fread($headle,filesize('file_work.txt'));
    fclose($headle);
    $headle = fopen($file,'w');
    fwrite($headle,$content);
    fclose($headle);
    header("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=$file");
    header("Content-Length: filesize($file)");
    readfile ($file);
    ?>
    Se vi interessa sapere come invio le variabili POST:
    Codice HTML:
    $.ajax({
    		type: 'POST',
    		url: 'download_file.php',
    		data: 'namefile='+namefile.value+'&typefile='+typefile.value,				
    		success: function(done)
    		{					
    			$(this).fadeIn('4000', "easeOutBounce").html(done);
    		}
    });
    molto semplicemente.
    Saluti & Birra.

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Direi che qua
    Codice PHP:
    header("Content-Disposition: attachment; filename=$file");
    la variabile $file contiene l'intero percorso del file, mentre ho idea che serva solo il nome. Puoi separarlo dal path usando basename(), o magari ce l'hai già da parte prima.

    In più, suggerisco file_get_contents e file_put_contents per semplificarti la vita.

  3. #3
    Guest

    Predefinito

    Si ma l'header come fa a sapere che file voglio scaricare? è che il file che mi interessa a me scaricare non é presente nella stessa directory, ma si trova in una sotto cartella, per questo che inserisco anche la directory.
    Grazie per i consigli, ne terrò a mente. Comunque l'importanza è che i codici funzionino.


    P.s: ho riscontrato una pecca, con ajax(); io dinamicamente riesco ad accedere alla pagina per scaricare, e infatti mi crea i file, ma, non mi scarica xD
    Sto provando a trovare una soluzione.
    Saluti & Birra.
    Ultima modifica di memai : 15-01-2013 alle ore 22.41.14

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ad header() non importa sapere dove sia il file: quella riga serve soltando per dire al browser come chiamare il file quando lo salva sul tuo computer. Il percorso completo va solo passato a readfile().

    Per il PS, beh, è così che funziona una chiamata asincrona: tu contatti il server, e questo ti ritorna il contenuto della pagina, o del file, come risposta alla chiamata. Se vuoi scaricare un file non ti serve javascript, ti basta solo un link ad esso —o al php che poi te lo fa scaricare.
    Ultima modifica di dreadnaut : 16-01-2013 alle ore 02.56.46

  5. #5
    Guest

    Predefinito

    Grazie, sei un mito.
    Ho sistemato tutto inserendo un link ipertestuale nel file della la creazione dei files con target _blank.
    Grazie ancora!.
    Saluti & Birra

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •