[PHP] Download Scripting

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Bathroth, 1. Mai 2010 .

Schlagworte:
  1. 1. Mai 2010
    Download Scripting

    Guten tag... sitze grade mit nem Kumpel hier und versuchen beide ein DL Script hinzukriegen .. habe schon mehrere Tuts gelesen und so .. und haben aber dennoch ein Problem ..

    PHP:
            <?php
            
            
            

            
            
    function  download ( $file )
            {
                
    $dir  "downloads/" ;
                
    $path  $dir . $file ;
                
                if(!
    file_exists ( $path ))
                {
                    die(
    "Error: The File does not exists!" );
                }
                else
                {
                    
    header ( "Cache-Control:public" );
                    
    header ( "Content-Description: File Transfer" );
                    
    header ( "Content-Description: attachment; filename= $path " );
                    
    header ( "Content-Type: application/zip" );
                    
    header ( "Content-Transfer-Encoding: binary" );
                    
                    
    readfile ( $path );
                }
            }
            
            if(isset(
    $_GET [ 'downloads' ]))
            {
                if(!empty(
    $_GET [ 'downloads' ]))
                {
                    
    $file  $_GET [ 'downloads' ];
                    
    download ( $file );
                }
            }
            
            echo 
    "File Downloads <br /><br />" ;
            echo 
    "<a href=\downloads.php?download=test.zip\">Download !</a>" ;

    ?>
    das is der Code ...

    Verzeichnisstruktur: downloads/test.zip

    Kann mir wer helfen... ich komme damit nicht weiter .. weiß einfach net wo der Fehler liegt
    und dazu muss ich sagen--> Ja wir sind Anfänger
     
  2. 1. Mai 2010
    AW: Download Scripting

    Wobei kann man dir denn Helfen? Gibt das Script ein Fehler aus, funktioniert es nicht?
     
  3. 1. Mai 2010
    AW: Download Scripting

    Der Fehler:

    Spoiler
    Objekt nicht gefunden!

    Der angeforderte URL konnte auf dem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder nicht mehr aktuell zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler.

    Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
    Error 404
    localhost
    01.05.2010 17:31:09
    Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0

    Normalerweise sollte das Fenster erscheinen mit download bzw speichern unter ... und es kommt der Fehler ...

    sorry hab vergessen den einzufügen!

    //e: Dazu muss ich sagen wir arbeiten über XAMPP was den Server emuliert.
     
  4. 1. Mai 2010
    AW: Download Scripting

    Dann läuft was mit dem Path nicht richtig. Gib mal den kompletten anstatt dem relativen Path an.

    Der header weiß ja nicht wohin damit.
    Sprich z.B. "http://localhost/downloads/test.zip"

    Edit:// Achja dynamisch wäre der Path 'http://localhost' per

    PHP:
    $url_dir  "http://" . $_SERVER [ 'HTTP_HOST' ];
    zu lösen
     
  5. 1. Mai 2010
    AW: Download Scripting

    ich weiß ja ned wo du nen location-header entdeckt hast, aber okay ^^

    für mich schaut das eher so aus, als ob das php-script sonstwo deponiert und falsch via localhost aufgerufen wurde.

    Objekt nicht gefunden = 404

    und noch was:
    PHP:
    header ( "Content-Description: attachment; filename= $path " );
    da habt ihr wohl $path mit $file verwechselt.
     
  6. 1. Mai 2010
    AW: Download Scripting

    Du hast unten nach $_GET['downloads'] gefragt, aber es heißt nur "download". Dazu hat beim href ein " gefehlt.

    Das ist etwas abgeändert wegen Testzwecken, also aufpassen ^^

    PHP:
    <? php


            


            
    function  download ( $file )
            {
                
    $dir  "./" ;
                
    $path  $dir . $file ;

                if(!
    file_exists ( $path ))
                {
                    die(
    "Error: The File does not exists!" );
                }
                else
                {
                    
    header ( "Expires: 0" );
                    
    header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
                    
    header ( "Content-Type: application/force-download" );
                    
    header ( "Content-Description: File Transfer" );

                    
    header ( "Content-Disposition: attachment; filename=" . str_replace ( ' ' '_' $file ). ";" );
                    
    header ( "Content-Length: " . filesize ( $file ));
                    
    header ( "Content-Transfer-Encoding: binary" );

                    @
    readfile ( $path );
                    exit;
                }
            }

            if(isset(
    $_GET [ 'download' ]))
            {
                if(!empty(
    $_GET [ 'download' ]))
                {
                    
    $file  $_GET [ 'download' ];
                    
    download ( $file );
                }
            }

            echo 
    "File Downloads <br /><br />" ;
            echo 
    "<a href=\"downloads.php?download=test.zip\">Download !</a>" ;

    ?>
     
  7. 1. Mai 2010
    AW: Download Scripting

    wenn es wiederum nicht funktionieren sollte, lass dir einfach mal den pfad mit echo ausgeben. dann kommste schnell auf den fehler.
     
  8. 1. Mai 2010
    AW: Download Scripting

    So nach langen überlegungen und kenntnissen aus c# haben wir nun ein neues script erstellt was auch klappt .. dennoch danke an alle die geholfen haben .. gibt für alle ne leckere BW ...

    der jetztge Quellcode:

    PHP:
            <?php
            
            
                            $files 
    = array(
                    
    "1"  =>  "test.zip" ,
                    
    "2"  =>  "blubb.txt" ,
                    
    "3"  =>  "test.bmp" ,
                    
    "4"  =>  "test.mdb" ,
                    
                  );
                                
                            function 
    _download ( $file )
                            {
                                if(!
    file_exists ( "downloads/" . $file ))
                                {
                                    return 
    'Die Datei existiert leider nicht mehr.' ;
                                }
                                else
                                {      
                            return 
    "<a href='downloads/" . $file . "'>Download</a>" ;
                                }
                            }
                            
                            

    echo 
    "<table border ='0' cellspacing ='10' cellpadding ='10'>" ;                        
      echo 
    "<tr>" ;
        echo 
    "<td>test.zip</td>" ;
        echo 
    "<td>" . _download ( $files [ 1 ]). "</td>" ;
     echo 
    "</tr>" ;
      echo 
    "<tr>" ;
        echo 
    "<td>blubb.txt</td>" ;
        echo 
    "<td>" . _download ( $files [ 2 ]). "</td>" ;
     echo 
    "</tr>" ;
      echo 
    "<tr>" ;
        echo 
    "<td>test.bmp</td>" ;
        echo 
    "<td>" . _download ( $files [ 3 ]). "</td>" ;
     echo 
    "</tr>" ;
      echo 
    "<tr>" ;
        echo 
    "<td>test.mdb</td>" ;
        echo 
    "<td>" . _download ( $files [ 4 ]). "</td>" ;
     echo 
    "</tr>" ;
    echo 
    "</table>" ;
                    

    ?> 
    Mfg und danke nochmals!
     
  9. 2. Mai 2010
    AW: Download Scripting

    aber so ne ausgabe is wirklich fail^^

    da reicht einmal echo am anfang oder direkt als html ausgeben und um die variablen <?php echo variable ?> setzen
     
  10. 2. Mai 2010
    AW: Download Scripting

    Wie gesagt ich bin en wirklicher Anfänger und habe was rumgefrickelt und nun klappt es
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.