Automatischer Download funktioniert nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Automatischer Download funktioniert nicht

    Ich habe folgendes Download Script erstellt.

    Auf dem Testserver funktioniert es, aber im Web nicht.
    Woran liegt das?

    PHP-Code:
    if (file_exists($file))
            {            
                    
                
    session_cache_limiter('none');
                                    
                
    // Download zählen
                
    $sqlupdate="UPDATE rf_downcounter SET `download_count` = '$anzahlneu' WHERE `file_ziel`='".$id."' LIMIT 1";
                
    $ergebnisupdate=mysql_query($sqlupdate);
            
                
    $len filesize($file);
                
    header('content-type: application/ovl');
                
    header('content-length: '.$len);
                
    header('content-disposition: attachment; filename='.basename($file));
                
    $fp=fopen($file'rb');
                while ( ! 
    feof($fp) )
                {    
                    
    set_time_limit(30);
                    
    $buffer fread($fp1024);
                    echo 
    $buffer;
                }
                        
                print 
    "
                <table width=\"95%\" align='center' border='1'  cellpadding='0' cellspacing='2' class='archive'>
                <tr>
                <td align=\"center\"> <b> 
    $daten </b>: <a href=files/$daten> Download starten </a> </td>
                </tr>
                </table> 
                "
    ;
                            
             } else {
            
                print 
    "
                <table width=\"95%\" align='center' border='1'  cellpadding='0' cellspacing='2' class='archive'>
                <tr>
                <td align=\"center\"> Fehler: Datei nicht gefunden </td>
                </tr>
                </table> 
                "
    ;
                
            } 
    in der ruhe liegt die kraft

  • #2
    was heisst automatischer Download und was heisst funktioniert nicht?

    Kommentar


    • #3
      das ist kein automatsicher download. du bietest ja einen link an. und wenn du schon mit diesen headern arbeitest, solltest du das aus der if-bedingung herausnehmen:
      PHP-Code:
      print "
      <table width=\"95%\" align='center' border='1'  cellpadding='0' cellspacing='2' class='archive'>
      <tr>
      <td align=\"center\"> <b> 
      $daten </b>: <a href=files/$daten> Download starten </a> </td>
      </tr>
      </table> 
      "

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Wenn ich auf einen Link klicke soll der Download der Datei automatisch starten, tut es aber nicht. Deshalb habe ich noch den Link eingebaut falls der Download nicht geht.

        Beispiel für einen Download

        Mfg Maffy
        in der ruhe liegt die kraft

        Kommentar


        • #5
          verweise bei dem link auf eine andere php-datei! dort arbeitest du die sql-abfragen ab und sendest anschließend die header. dann erscheint auch der dowload-dialog. und die sache mit datei heruntergeladen kannst du dir sparen.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            habe jetzt eine neue Datie downloads.php erstellt, aber es tut sich trotzdem nichts.

            Ich habe da was von einem IE Bug gelesen hängt das damit zusammen?

            [php]


            $root_path = "../";

            include($root_path . 'inc/data.php');

            $file = mysql_query("Select * from rf_downcounter WHERE file_ziel = ".$getfile." ");
            $file_daten = mysql_fetch_array($file);

            $daten = $file_daten['file'];
            $anzahlneu = $file_daten['download_count']+1;

            $filename = basename($daten);
            $datei = 'files/' . $filename;

            // Download erstellen
            print"<p> Datei $daten herunterladen: </p> ";

            if (file_exists($datei))
            {
            $len = filesize($file);
            header('content-type: application/ovl');
            header('content-length: '.$len);
            header('content-disposition: attachment; filename='.basename($datei));
            exit;

            } else {

            print " Fehler: Datei nicht gefunden.";

            }

            [php]

            Mfg Maffy
            in der ruhe liegt die kraft

            Kommentar


            • #7
              Ich habe da was von einem IE Bug gelesen hängt das damit zusammen?
              klappt es im ff? testausgaben gemacht? außerdem gibts du die datei garnicht aus.

              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                außerdem gibts du die datei garnicht aus.
                http://de.php.net/readfile
                mfg

                Kommentar


                • #9
                  Habe mir die Bsp. auf der Seite angeschaut, und einige Verbesserungen vorgenommen. Das Problem ist aber immer noch da.

                  Auf dem Testserver Xampp / Apache funktioniert das Sript, in der Webseite wird der Inhalt der Datei angezeigt aber der Download funktioniert nicht.

                  Oder hängt das irgendwie mit dem Geogrid-Viewer Overlay (.ovl) Format zusammen?

                  PHP-Code:

                      $root_path 
                  "../";
                              
                      include(
                  $root_path 'inc/data.php');
                      
                      
                  $id $_GET["getfile"]; 
                      
                      
                  $sql mysql_query("Select * from rf_downcounter WHERE  file_ziel = ".$id." ");    
                      
                  $erg mysql_fetch_array($sql);
                      
                      
                  $file_name $erg['file'];
                      
                      
                  $file "".$file_name."";
                      
                  $url "files/".$file."";
                      
                      
                  $file_extension strtolower(substr(strrchr($file,"."),1));
                      
                      print 
                  " ".$url." - ".$file." - ".$file_extension." ";

                      function 
                  id_browser() {
                      
                  $browser=$GLOBALS['__SERVER']['HTTP_USER_AGENT'];
                     
                     if(
                  ereg('Opera(/| )([0-9].[0-9]{1,2})'$browser)) {
                         return 
                  'OPERA';
                     } else if(
                  ereg('MSIE ([0-9].[0-9]{1,2})'$browser)) {
                         return 
                  'IE';
                     } else if(
                  ereg('OmniWeb/([0-9].[0-9]{1,2})'$browser)) {
                         return 
                  'OMNIWEB';
                     } else if(
                  ereg('(Konqueror/)(.*)'$browser)) {
                         return 
                  'KONQUEROR';
                     } else if(
                  ereg('Mozilla/([0-9].[0-9]{1,2})'$browser)) {
                         return 
                  'MOZILLA';
                     } else {
                         return 
                  'OTHER';
                     }
                      }
                      
                      
                  $browser=id_browser(); 

                      switch (
                  $type) {
                      case 
                  "exe": (($browser=='IE' || $browser=='OPERA')?
                      (
                      
                  $ctype="application/octetstream"):(
                      
                  $ctype="application/octet-stream"));break;
                      case 
                  "pdf"$ctype="application/pdf";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 
                  "jpe": case "jpeg":
                      case 
                  "jpg"$ctype="image/jpg"; break;
                      case 
                  "ovl"$ctype="application/Geogrid-Viewer Overlay"; break;
                      default: 
                  $ctype="application/force-download";
                      }
                      
                      
                          
                       if (!
                  file_exists($url)) {
                           die(
                  "NO FILE HERE");
                       }

                          if(
                  ini_get('zlib.output_compression')) 
                          
                  ini_set('zlib.output_compression''Off'); 

                            
                             
                  header("Pragma: public");
                             
                  header("Expires: 0");
                             
                  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                             
                  header("Cache-Control: private",false);
                             
                  header("Content-Type: $ctype");
                             
                  header("Content-Disposition: attachment; filename=\"".basename($url)."\";");
                             
                  header("Content-Transfer-Encoding: binary");
                             
                  header("Content-Length: ".@filesize($url));
                             
                  set_time_limit(0);
                             
                  $fp = @fopen($url,"rb");
                             
                  fpassthru($fp);
                             
                  fclose($fp); 

                  Mfg Maffy
                  in der ruhe liegt die kraft

                  Kommentar


                  • #10
                    PHP-Code:
                     print " ".$url." - ".$file." - ".$file_extension." "
                    warum diese Ausgabe? Das zerstört dein Download. Außerdem, was soll denn dieser Unfug:
                    PHP-Code:
                        $file "".$file_name."";
                        
                    $url "files/".$file.""
                    was sollen denn die "" deiner Meinung nach bewirken? Damint $file/$url ein String wird

                    Kommentar


                    • #11
                      Aus irgendeinem grund funktioniert der Download nur, wenn ich einen Text Link zur Datei einbaue.

                      Wenn ich das mit den header funktionen versuche, passiert garnichst.

                      Habe jetzt schon verschieden Scripte getestet´aber nichts geht.

                      Auf dem TestServer funktionierts übrigens auch mit header, wenn ich das dann ins Internet stelle geht es plötzlich nicht mehr nur über einen Text Link wo das File direkt geöffnet wird.

                      Mfg Maffy
                      in der ruhe liegt die kraft

                      Kommentar

                      Lädt...
                      X