Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [php]: download file

  1. #1

    [php]: download file

    Ho due file php, in uno visualizzo i record di una tabella, questi record sono nomi di file con relativo percorso, cliccando su un nomi faccio partire il secondo file php che ha il compito di aggiornare il numero di volte che il file è stato scaricato, fin qui tutto bene, la tabella viene aggiornata, fatto questo non so come dire a php di fare comparire la finestra finestra di download per salvare il file.

    Come posso fare? sono alle prime armi con il php, mi potete aiutare.

    Grazie,
    ciao.

  2. #2
    Ho trovato su internet questo pezzo di codice che fa proprio ciò che io voglio, ma il problema è che anziché scaricare l'intero file, ne scarica soltanto 169 byte. Qualcuno saprebbe dirmi dov'è l'errore?

    Vi allego il codice:

    <?php
    header("Content-Type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=".$_REQUEST['file']);
    header("Content Description: Download PHP");
    header("Content-Length: ".$_REQUEST['dim']);
    $f=".".$_REQUEST['dir'];
    readfile($f);
    ?>

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Scusa,ma a seconda dell'estensione del file la finestra per il download non dovrebbe aprirsi in automatico cliccandoci sopra, come ad esempio per file zippati, ecc a prescindere dal php?

  4. #4

  5. #5
    ho avuto il tuo stesso problema per effettuare l'export di una tabella e farlo scaricare in file...

    alla fine ho risolto utilizzando il comando header()...

    http://it2.php.net/manual/en/function.header.php

    in pratica con un echo visualizzi nella pagina un contenuto e tramite il comando header inposti l'intestazione pagina e glielo fai scaricare...

    questo uno scriptino che mi ero costruito ai tempi (da controllare perchè IE ha un header leggermente diverso e nn è testato sul 6.0)

    <?

    $dump_buffer="Contenuto del .txt da scaricare";

    $filename="nomefile";
    $export_type=".txt";
    $content_encoding="";


    $filename .= '.'.$_POST['export_type'];
    $mime_type = 'text/x-comma-separated-values';

    $save_filename = $cfg['SaveDir'] . preg_replace('@[/\\\\]@','_',$filename);
    unset($message);


    if (!empty($content_encoding)) {
    header('Content-Encoding: ' . $content_encoding);
    }

    header('Content-Type: ' . $mime_type);
    header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');

    if (PMA_USR_BROWSER_AGENT == 'IE') {
    header('Content-Disposition: inline; filename="' . $filename . '"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    } else {
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Pragma: no-cache');
    }

    echo $dump_buffer

    ?>


    Spero possa servirti...
    http://www.ophera747.com

  6. #6
    ops....

    incollato sbagliato... quello corretto è:

    <?

    $dump_buffer="Contenuto del .txt da scaricare";

    $filename="nomefile";
    $export_type=".txt";
    $content_encoding="";


    $filename .= '.'.$export_type;
    $mime_type = 'text/x-comma-separated-values';

    $save_filename = $cfg['SaveDir'] . preg_replace('@[/\\\\]@','_',$filename);
    unset($message);


    if (!empty($content_encoding)) {
    header('Content-Encoding: ' . $content_encoding);
    }

    header('Content-Type: ' . $mime_type);
    header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');

    if (PMA_USR_BROWSER_AGENT == 'IE') {
    header('Content-Disposition: inline; filename="' . $filename . '"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    } else {
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Pragma: no-cache');
    }

    echo $dump_buffer

    ?>
    http://www.ophera747.com

  7. #7
    Ti ringrazio tanto per il codice che mi hai fornito e per il tuo tempo concessomi, ma ho appena risolto il problema insieme ad un amico che mi è venuto a trovare.

    Ti inserisco il mio codice corretto:
    <?php
    $select_query = "SELECT cartella,nome_file FROM download WHERE nome_file = '".$_REQUEST['file']."';";
    $resultset = mysql_query($select_query,$conn) or die($error_query . mysql_error());
    if($riga = mysql_fetch_array($resultset))
    {
    $file_path = $riga['cartella'];
    }
    mysql_close();

    //procedura per il download del file
    $file_name = $_REQUEST ['file'];
    $file_size = filesize ($file_path . $file_name);
    header("Content-Type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=" . $file_name);
    header("Content Description: Download PHP");
    header("Content-Length: " . $file_size);
    $f = $file_path . $file_name;
    readfile ($f);
    ?>

    Grazie ancora,
    ciao.

  8. #8
    readfile ($f)... interessante...
    mai usato così.. ma in effetti comodo...
    http://www.ophera747.com

  9. #9
    em, raga la funzione che ho linkato fa tutto questo in modo semplice e compatibile con headers per IE , mozilla e altri ... gli avete dato almeno un' occhiata ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    ma la funzione forceDownload che dici tu in effetti fa sempre la stessa cosa.... tramite il comando header.. con l'unica limitazione che il file dev'essere già presente su server

    if (file_exits ($file) .....)

    invece se non sbaglio il problema era che il file viene creato solo nel /tmp del server e da li scaricato... così si risolvono eventuali scazzi del tipo... nn ho cartelle aperte in scrittura...
    http://www.ophera747.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.