Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [PHP] script download file

    Ciao a tutti e scusate per il disturbo ma ho bisogno di un aiuto ...!
    praticamente ho intenzione di realizzare uno script che mi permetta di scaricare dal sito che sto realizzando dei file con diverse estensioni ....(pdf,doc, ecc) residenti sul server ....!
    Ho visto un po in giro per il forum ma nessuna discussione mi ha schiarito le idee ....per questo vi chiedo gentilmente di mostrarmi se è possibile come si fa o indirizzarmi su qualche utile tutorial ....!

    Grazie in anticipo ....!

  2. #2
    Allora nessuno mi può aiutare ...?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    form.php

    Codice PHP:
     echo "<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
    //apro la cartella ivi presenti i file da s caricare
    $cartella opendir("upload/".$riga['type']."/");
    //finchè la directory esiste
    while ($file readdir($cartella)) {
    //leggi i file da scaricare e mettili in un array
    $array_file[] =$file;
    }
    //per ogni file memorizzato in array
    foreach ($array_file as $file) {
    echo 
    "<TR><TD><CENTER>";
    //il cui percorso sia diverso da ./ o ../
    if ( $file == ".." || $file == ".") {
    continue;
    }
    //memorizzo la dimensione del file
    $dimensioni_file=filesize("upload/".$riga['type']."/".$file);
    //e il percorso del file
    $dir="upload/".$riga['type']."/".$file;
    echo 
    "<a href=\"
    //link che ti permette di s caricare il file passando via get dimension e percorso
    download.php?nome_file=
    $file&dimensioni_file=$dimensioni_file&dir=$dir

    \">
    $file</a>,
    "
    ;
    echo 
    "</TR></TD></CENTER>";

    download_specifico.php
    Codice PHP:
     <?
    // download.php
    // funzione per il download di un file anche residente in una parte
    // di filesystem non accessibile direttamente via WEB
    //
    // funzione originale reperibile all'indirizzo
    // [url]http://it2.php.net/manual/en/function.header.php[/url]
     
    // setto la dir base in cui si debbono trovare i file da scaricare
    /*include 'include/conf.inc.php';
    $id=stripslashes($_POST['IDobject']);
    $sql=mysql_query("select type from category where IDcat='$id';");
    $riga=mysql_fetch_array($sql);
    "upload/".$riga['type']; 
     


    $basedir =$_GET['dir'];
    echo $basedir;
    // controllo che il nome del file non sia malformato
    // filename del tipo ../../../etc/passwd creano buchi di sicurezza
    $download_file = $_GET['filename'];
    $have_dir = dirname ($download_file);
    if ($have_dir != '.') die ('Nome file malformato! non ci provare ;-P');
     
    function dl_file($download_file) {
       //Informazioni sul file che si vuole scaricare
       $len = filesize($download_file); //dimensione del file
       $file_extension = strtolower(substr(strrchr($_GET['filename'], "."),1));
     
       //Setta il  Content-Type, basandosi sull'estensione del file
       switch( $file_extension ) {
         case "pdf": $ctype="application/pdf"; break;
         case "exe": $ctype="application/octet-stream"; break;
         case "zip": $ctype="application/zip"; break;
         case "doc": $ctype="application/msword"; break;
         case "xls": $ctype="application/vnd.ms-excel"; break;
         case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
         case "gif": $ctype="image/gif"; break;
         case "png": $ctype="image/png"; break;
         case "jpeg":
         case "jpg": $ctype="image/jpg"; break;
         case "mp3": $ctype="audio/mpeg"; break;
         case "wav": $ctype="audio/x-wav"; break;
         case "mpeg":
         case "mpg":
         case "mpe": $ctype="video/mpeg"; break;
         case "mov": $ctype="video/quicktime"; break;
         case "avi": $ctype="video/x-msvideo"; break;
         
         // Estensioni che non dovrebbero essere scaricate per sicurezza
         case "php":
         case "htm":
         case "html":
         case "txt": die("[b]Non pu&amp;amp;amp;ograve; essere usata per file .". $file_extension ." ![/b]"); break;
         default: $ctype="application/force-download";
       }
     
       // Comincio ad inviare gli headers
       header("Pragma: public");
       header("Expires: 0");
       header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
       header("Cache-Control: public");
       header("Content-Description: File Transfer");
      
       // Setto il content-type
       header("Content-Type: $ctype");
     
       // Forzo il download del file
       $header="Content-Disposition: attachment; filename=".$_GET['filename'].";";
       header($header );
       header("Content-Transfer-Encoding: binary");
       header("Content-Length: ".$len);   
       @readfile($file);
    }
    ?>
    dl_file($basedir.$download_file);
    questi sono i file il form e la pagina che processa. ovviamente ricordati di cambiare i valori delle variabili dove necessario ed il percorso della cartella in cui sALVI I FILE SCaricati
    saluti luigi

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    download_specifico.php

    Codice PHP:
     <?
    // download.php
    // funzione per il download di un file anche residente in una parte
    // di filesystem non accessibile direttamente via WEB
    //
    // funzione originale reperibile all'indirizzo
    // [url]http://it2.php.net/manual/en/function.header.php[/url]
     
    // setto la dir base in cui si debbono trovare i file da scaricare
    /*include 'include/conf.inc.php';
    $id=stripslashes($_POST['IDobject']);
    $sql=mysql_query("select type from category where IDcat='$id';");
    $riga=mysql_fetch_array($sql);
    "upload/".$riga['type']; 
     


    $basedir =$_GET['dir'];
    echo $basedir;
    // controllo che il nome del file non sia malformato
    // filename del tipo ../../../etc/passwd creano buchi di sicurezza
    $download_file = $_GET['filename'];
    $have_dir = dirname ($download_file);
    if ($have_dir != '.') die ('Nome file malformato! non ci provare ;-P');
     
    function dl_file($download_file) {
       //Informazioni sul file che si vuole scaricare
       $len = filesize($download_file); //dimensione del file
       $file_extension = strtolower(substr(strrchr($_GET['filename'], "."),1));
     
       //Setta il  Content-Type, basandosi sull'estensione del file
       switch( $file_extension ) {
         case "pdf": $ctype="application/pdf"; break;
         case "exe": $ctype="application/octet-stream"; break;
         case "zip": $ctype="application/zip"; break;
         case "doc": $ctype="application/msword"; break;
         case "xls": $ctype="application/vnd.ms-excel"; break;
         case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
         case "gif": $ctype="image/gif"; break;
         case "png": $ctype="image/png"; break;
         case "jpeg":
         case "jpg": $ctype="image/jpg"; break;
         case "mp3": $ctype="audio/mpeg"; break;
         case "wav": $ctype="audio/x-wav"; break;
         case "mpeg":
         case "mpg":
         case "mpe": $ctype="video/mpeg"; break;
         case "mov": $ctype="video/quicktime"; break;
         case "avi": $ctype="video/x-msvideo"; break;
         
         // Estensioni che non dovrebbero essere scaricate per sicurezza
         case "php":
         case "htm":
         case "html":
         case "txt": die("[b]Non pu&amp;amp;amp;ograve; essere usata per file .". $file_extension ." ![/b]"); break;
         default: $ctype="application/force-download";
       }
     
       // Comincio ad inviare gli headers
       header("Pragma: public");
       header("Expires: 0");
       header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
       header("Cache-Control: public");
       header("Content-Description: File Transfer");
      
       // Setto il content-type
       header("Content-Type: $ctype");
     
       // Forzo il download del file
       $header="Content-Disposition: attachment; filename=".$_GET['filename'].";";
       header($header );
       header("Content-Transfer-Encoding: binary");
       header("Content-Length: ".$len);   
       @readfile($file);
    }
    ?>
    dl_file($basedir.$download_file);

  5. #5
    ok ....!
    provo subito il codice che hai postato ...!
    grazie mille per l'aiuto ...!

  6. #6
    Scusa se ti disturbo nuovamente ma visto che è da poco che utilizzo php vorrei maggiori chiarimenti sul codice che hai postato ...!
    ti ringrazio ...!

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.