Visualizzazione risultati 1 fino 19 di 19

Discussione: Problema Download PHP

  1. #1
    Guest

    Post Problema Download PHP

    Ciao a tutti,
    Ho un problema per il download dei file in PHP.
    Il codice è il seguente:
    Codice PHP:
    <HTML>
    <BODY>
    <TABLE>
    <TR><TH>Fai clic sui link per scaricare i file</TH></TR>
    <?
    $cartella
    = opendir('mia_cartella');
    while (
    $file = readdir($cartella)) {
    $array_file[] = $file;
    }
    foreach (
    $array_file as $file) {
    echo
    "<TR><TD><CENTER>";
    if (
    $file == ".." || $file == ".") {
    continue;
    }
    $dimensioni_file=filesize("mia_cartella/".$file);
    echo
    "<a href=\"
    downloadit.php?nome_file=
    $file&dimensioni_file=$dimensioni_file
    \">
    $file</a>,<BR>";
    echo
    "</TR></TD></CENTER>";
    }
    ?>
    </TABLE>
    </BODY>
    </HTML>
    In seguito bisogna aprire la pagina 'downloadit.php' dove il codice è il seguente:
    Codice PHP:
    <?php
    header
    ("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=$nome_file");
    header("Content-Description: Download PHP");
    header("Content-Length: $dimensioni_file");
    readfile($nome_file);
    ?>
    Tutto funziona ma quando vado a cliccare sul link, non mi scarica il file su cui ho cliccato ma il file 'downloadit.php'.
    Aiuto!!! Come posso fare??
    Grazie
    Ultima modifica di alemoppo : 24-06-2013 alle ore 16.18.36 Motivo: +tag [php]

  2. #2
    Guest

    Predefinito

    Codice PHP:
    <?php
    header
    ("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=$nome_file");
    header("Content-Description: Download PHP");
    header("Content-Length: $dimensioni_file");
    readfile($nome_file);
    ?>
    le variabili di downloadit.php come fanno essere settate visto che nel codice non c'è una variabile di tipo get?

  3. #3
    Guest

    Predefinito

    Scusa l'ignoranza ma è da poco che programmo in php,
    non ho capito bene dove dovrei inserire la variabile get!!
    potresti scrivermi il codice completo?
    Grazie!!!

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    • So che all'inizio può essere più facile, ma non usare le tabelle per impaginare i contenuti.
    • Il tag <center> è obsoleto. Si usa il css per gli attributi di stile.
    • Nei link che prepari:
      downloadit.php?nome_file=$file&dimensioni_file=$di mensioni_file
      Invii 2 parametri GET: $_GET['nome_file'] e $_GET['dimensioni_file']. Quindi, le variabili $nome_file e $dimensioni_file saranno non definite. Devi prima prelevare i contenuti da $_GET.
    • Non ha senso passare anche la dimensione, perché è facilmente calcolabile direttamente dalla pagina "download.php"
    • Il contenuto di una cella della tabella deve essere dentro <td>, e non puoi scrivere del contenuto direttamente in <tr>!


    Ciao!
    Ultima modifica di alemoppo : 24-06-2013 alle ore 19.58.02

  5. #5
    Guest

    Predefinito

    Ciao ma questi 2 parametri dove li devo inserire ma soprattutto come li devo scrivere?
    Potresti scrivermi il codice corretto??
    Grazie!!

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Citazione Originalmente inviato da federix98 Visualizza messaggio
    Ciao ma questi 2 parametri dove li devo inserire ma soprattutto come li devo scrivere?
    Come li ho scritti io


    Citazione Originalmente inviato da federix98 Visualizza messaggio
    Potresti scrivermi il codice corretto??
    No: sarebbe troppo facile

    Per imparare a ricercare le cose, devi sbatterci la testa.

    Documentazione ufficiale $_GET
    Qualche ricerca su google

    EDIT: ovviamente, se non capisci qualcosa, siamo qui :)

    Ciao!
    Ultima modifica di alemoppo : 24-06-2013 alle ore 22.31.50 Motivo: +edit

  7. #7
    Guest

    Predefinito

    infatti se vuoi imparare a programmare in php almeno il get lo devi conoscere...

  8. #8
    Guest

    Predefinito

    Ok Grazie mille della documentazione.

  9. #9
    Guest

    Predefinito

    Quindi devo inserire queste 2 righe riguardo quello che ho trovato su internet:
    $nome_file = $_GET['nome_file'];
    $dimensioni_file = $_GET['dimensioni_file'];
    ???

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Prova e lo scoprirai

    Ciao!

  11. #11
    Guest

    Predefinito

    Già fatto non funziona!!!
    Ciao

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Cosa appare? Appare qualche errore? Le righe le hai inserite sopra i vari "header()"?

    Ciao!

  13. #13
    Guest

    Predefinito

    No le ho inserite sia in questo file:
    Codice PHP:
    <HTML>
    <BODY>
    <TABLE>
    <TR><TH>Fai clic sui link per scaricare i file</TH></TR>
    <?
    $cartella
    = opendir('mia_cartella');
    while (
    $file = readdir($cartella)) {
    $array_file[] = $file;
    }
    foreach (
    $array_file as $file) {
    echo
    "<TR><TD><CENTER>";
    if (
    $file == ".." || $file == ".") {
    continue;
    }
    $dimensioni_file=filesize("mia_cartella/".$file);
    echo
    "<a href=\"
    downloadit.php?nome_file=
    $file&dimensioni_file=$dimensioni_file
    \">
    $file</a>,<BR>";
    echo
    "</TR></TD></CENTER>";
    }
    ?>
    </TABLE>
    </BODY>
    </HTML>
    che in questo:
    Codice PHP:
    <?php
    header
    ("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=$nome_file");
    header("Content-Description: Download PHP");
    header("Content-Length: $dimensioni_file");
    readfile($nome_file);
    ?>
    Ma il file che scarica quando clicco sul link è sempre il file "downloadit.php";
    Provate anke voi!!!
    Grazie, ciao!!!
    Ultima modifica di alemoppo : 25-06-2013 alle ore 16.10.11 Motivo: +tag [php]

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    I parametri get servono soltanto nel secondo file. (tra l'altro, serve soltanto nomefile, perché la dimensione è molto meglio ricavarla direttamente nel secondo file).
    Sarebbe comunque utile vedere i codici modificati e non quelli originari, per capire il problema.

    Ciao!

  15. #15
    Guest

    Predefinito

    Ok, quindi il primo codice è uguale.
    Il secondo è così:
    Codice PHP:
    <?php
    $_GET
    ['nome_file'] = $nome_file;
    $_GET['dimensioni_file'] = $dimensioni_file;
    header("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=$nome_file");
    header("Content-Description: Download PHP");
    header("Content-Length: $dimensioni_file");
    readfile($nome_file);
    ?>
    Giusto????
    Comunque questo codice non mi funziona!!!
    A te va???
    Grazie ciao!!
    Ultima modifica di alemoppo : 25-06-2013 alle ore 16.23.25 Motivo: +tag [php]

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    uhm... Devi mettere il contenuto di $_GET['nome_file'] dentro $nome_file.

    Se fai:
    Codice PHP:
    $a = $b;
    Metti il contenuti di b dentro a, e non vice versa! Qui l'avevi scritto correttamente...

    Ciao!

  17. #17
    Guest

    Predefinito

    Grazie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!
    Funziona tutto!!

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Eh però mantieni la calma :D
    Invece di:
    Codice PHP:
    $dimensioni_file = $_GET['dimensioni_file'];
    Sarebbe meglio fare:
    Codice PHP:
    $dimensioni_file=filesize("mia_cartella/".$_GET['nome_file']);
    Ah, poi usare file_exists() non sarebbe male per dar una controllata se il file esiste realmente!

    Se proprio vuoi far le cose fatte bene, anche una isset() su $_GET['nome_file'] ci starebbe bene: se non inviano quel parametro, il tuo script come si comporta? :D

    Ciao!

  19. #19
    Guest

    Predefinito

    Ottimi consigli
    Grazie ciao!

Regole di scrittura

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