Visualizzazione dei risultati da 1 a 9 su 9

Discussione: pagina download files

  1. #1

    pagina download files

    Ciao a tutti sto tentando di realizzare una pagina per il download di alcuni files ho trovato un buon esempio qui
    la mi pagina download.php legge il contenuto della cartella /docs/ e la visualizza all'utente

    Codice PHP:
    <TABLE BORDER=8 WIDTH=40% ALIGN=CENTER BORDER=3>
     <TR><TH>Fai clic sui link per scaricare i file</TH></TR>
     <?
     
    # elenco dei contenuti di una cartella con link
     
    $cartella opendir('docs');
     while (
    $file readdir($cartella)) {
     
    $array_file[] = $file;
     }
     foreach (
    $array_file as $file) {
     echo 
    "<TR><TD><CENTER>";
     if ( 
    $file == ".." || $file == ".") {
     continue;
     }
     
    $dimensioni_file=filesize("docs/".$file);

     echo 
    "<a href=\"downloadit.php?nome_file=$file&dimensioni_file=$dimensioni_file\">$file</a>
    "
    ;
     echo 
    "</TR></TD></CENTER>";
    se l'utente seleziona un file dovrebbe passarlo alla pagina downloadit.php che lo scarica
    Codice PHP:
    <?php
     header
    ("Content-type: Application/octet-stream");
     
    header("Content-Disposition: attachment; filename=$nome_file");
     
    header("Content-Description: Download Libriliberi files");
     
    header("Content-Length: $dimensioni_file");
     
    readfile($nome_file);
     
    ?>
    se controllo la stringa che viene passata nel browser sembra funzionare

    codice:
    http://www.sitosucuistolavorando.it/download/downloadit.php?nome_file=Bollettino_1.png&dimensioni_file=626142
    ma il dialog box mi scarica sempre e solo un file di nome downloadit senza estensione e senza contenuto (dimensione 0 K)

    ho provato a cambiare ("Content-type: Application/octet-stream"); ma nulla ...

    qualcuno sa dirmi cosa sto sbagliando???
    grazie in anticipo per l'aiuto
    RM

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    Ma il parametro che passi nell'url lo recuperi? dalla pagina downloadit.php non sembrerebbe.

    Il file che cerchi di scaricare è nella stessa cartella di downloadit.php?

    Inoltre non passare le dimesioni, ma recuperale direttamente in downloadit.php con filesize http://php.net/manual/en/function.filesize.php

  3. #3
    Ma il parametro che passi nell'url lo recuperi? dalla pagina downloadit.php non sembrerebbe.
    effettivamente non c'è altro nella mia pagina downloadit.php, tu intendi recuperarlo attravero variabile globale?
    Il file che cerchi di scaricare è nella stessa cartella di downloadit.php?
    no i file si trovano in una sottocartella /docs/

  4. #4
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    Bhe si devi usare $_GET o $_REQUEST

    Codice PHP:
    $nome_file $_GET['nome_file']; 
    Naturalmente a nome file devi aggiungere il percorso per arrivarci al file, altrimenti non riesce a leggerlo.

  5. #5
    ok ho cambiato il codice in :

    Codice PHP:
    $nome_file=stripslashes($_GET['nome_file']); 
    $dimensioni_file=stripslashes($_GET['dimensioni_file']); 
    $dir=stripslashes($_GET['dir']); 
    header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: public"); 
    header("Content-Type: application/html"); 
    header("Content-Description: File Transfer"); 
    header("Content-type: Application/octet-stream"); 
    header("Content-Disposition: attachment; filename=$nome_file"); 
    header("Content-Description: Download PHP"); 
    header("Content-Length: $dimensioni_file"); 
    readfile($dir); 
    adesso il file che scarica è giusto
    ultimo problema il file scaricato è di 0 Kb....

  6. #6
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    stai facendo confusione, non hai ben chiare le basi di come fare ciò che vuoi fare.

    1. non passare tutto in get, dare troppe informazioni implica problemi di sicurezza.
    2. se la cartella è sempre la stessa perché la passi in get?
    3. non passare la dimensione del file in get, ma usa filesize
    4. sicuro che riesci a leggere il file? leva tutti gli header e lascia solo readfile, se è raggiungibile lo vedrai a video più o meno leggibile altrimenti di dirà che non trova il file.

  7. #7
    temo di non aver capito bene il tuo suggerimento....
    adesso il mio downloadit.php è composto solo da:
    Codice PHP:
    <?php

    $nome_file
    =stripslashes($_GET['nome_file']); 

    filesize($nome_file);

    readfile($nome_file);
     
    ?>
    nel browser compare
    che sarebbe corretto, ma non succede nulla...

  8. #8
    Qualcuno ha un'idea???
    Grazie

  9. #9
    Ho risolto.....
    problema banano.... non avevo messo
    session_start();
    all'inizio del file downloadit.php
    posto il codice completo e funzionante della downloadit.php
    Codice PHP:
    <?php
    session_start
    (); 
    $nome_file=stripslashes($_GET['nome_file']);  
    $dimensioni_file =filesize($nome_file);
    $dir=stripslashes($_GET['dir']);  
    header("Pragma: public");  
    header("Expires: 0");  
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
    header("Cache-Control: public");  
    header("Content-Type: application/html");  
    header("Content-Description: File Transfer");  
    header("Content-type: Application/octet-stream");  
    header("Content-Disposition: attachment; filename=$nome_file");  
    header("Content-Description: Download PHP");  
    header("Content-Length: $dimensioni_file");  
    readfile($dir);


    readfile($nome_file);
     
    ?>

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 © 2025 vBulletin Solutions, Inc. All rights reserved.