Automatischer Download funktioniert nicht

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Comment


    • #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

      Comment


      • #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

        Comment


        • #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

          Comment


          • #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

            Comment


            • #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

              Comment


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

                Comment


                • #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

                  Comment


                  • #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

                    Comment


                    • #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

                      Comment

                      Working...
                      X