Download Script Fehler

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

  • Download Script Fehler

    Hi,
    habe folgendes Problem:
    ich habe mir ein Downloadscript geschrieben mit dem ich Files nur einem authorisierten User zur Verfügung stellen will.
    Funktioniert soweit aber ich habe folgenden Fehler:
    in Firefox funktioniert aber nach ca. 5 - 6 Downloads (ist unterschiedlich) bleibt der Browser hängen - es gibt keine Rückantwort des Servers.
    Ich muß FF erst schließen - dann funktioniert wieder alles.
    In Safari tritt der Effekt nicht auf.
    Hier mal der relvante Teil des Scripts:
    PHP-Code:
    /*
    Hier abfragen ob user berechtigt, die File informationen werden aus einer DB geholt etc.
    Bis hierhin kann ich das Script beliebig oft aufrufen
    */
    header('Content-Type: application/download');
    $save_as_name basename($file);
    header("Content-Disposition: attachment; filename=\"".$save_as_name."\"");
    header("Content-Length: ".filesize($basedir.$file));
    // Datei ausgeben.
    if(readfile($filename)){
        
    $ipadresse getenv("REMOTE_ADDR") ;
        
    $sql "INSERT INTO .....";
        
    $db->execute($sql);
    }
    $db->destroy(); 
    Wie gesagt - das Script funktioniert erstmal, nach einigen (Anzahl unterschiedlich) hängt sich FF in der Kommunikation mit dem Server auf - auch auf Anfragen von anderen Seiten gibt es keine Rückantwort des Servers
    Hätte einer ne Idee woran das liegen könnte?
    lg,
    McM
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

  • #2
    Hallo,

    vermutlich ist die Content-Length falsch. Schließlich verwendest du 2 verschiedene Wege, um auf die Datei zuzugreifen:
    • $basedir und $file
    • $filename


    Da ist (ohne Kenntnis des übrigen Code) nicht auszuschließen, dass die auch unterschiedliche Inhalte haben. Genau diesen übrigen Code (der relevant gewesen wäre) hast du aber nicht gepostet.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hi Freundin der Nacht,
      hier die fehlende Code zeile:
      PHP-Code:
      $filename sprintf("%s/%s"$basedir$file); 
      * $basedir und $file
      * $filename
      sind also gleich.
      Habe es auch mal so geändert:
      PHP-Code:
      header("Content-Disposition: attachment; filename=\"".$save_as_name."\"");
      header("Content-Length: ".filesize($filename));

      // Datei ausgeben.
      if(readfile($filename)){
      // wenn file ausgegeben wird vermerke mir das in der DB

      Wenn da der Fehler liegen würde müsste sich Safari ja auch auf hängen.
      Soll ich mal den ganzen Code posten?
      "I don't want to belong to any club that would accept me as a member."

      Groucho Marx

      Kommentar


      • #4
        Download mit readfile() ist tückisch. Schau mal diesen Kommentar an, dann ahnst du was ich meine.

        Kommentar


        • #5
          Danke für den Hinweis - wie wäre denn deine empfohlene Alternative?

          habe auch mal die function smartReadFile($location, $filename, $mimeType='application/octet-stream')
          aus dem von dir genannten Kommentar probiert - genau das gleiche Ergebniss
          Zuletzt geändert von mcmurphy; 17.01.2011, 13:21.
          "I don't want to belong to any club that would accept me as a member."

          Groucho Marx

          Kommentar


          • #6
            Diese Funktion ist aus einem anderen Kommentar. Probiere lieber mal denCode aus dem verlinkten, der deckt mehr potenzielle Fehler ab.

            Kommentar


            • #7
              Hi OneMoreNerd,
              habe mich an deinem Beispiel probiert - da tut sich das Problem auf das sich zwar Bilder downloaden lassen aber durch diesen Part hier:
              PHP-Code:
              $chunksize * (1024 1024); // how many bytes per chunk
              if ($size $chunksize) {
                
              $handle fopen($realpath'rb');
                
              $buffer '';
                while (!
              feof($handle)) {
                  
              $buffer fread($handle$chunksize);
                  echo 
              $buffer;
                  
              ob_flush();
                  
              flush();
                }
                
              fclose($handle);
              } else {
                
              readfile($realpath);

              wird ein downgeloadtes Video zwar mit der richtigen Größe gedownloadet aber von der jeweiligen Anwendung als defekt angesehen wird....
              Zuletzt geändert von mcmurphy; 17.01.2011, 16:45.
              "I don't want to belong to any club that would accept me as a member."

              Groucho Marx

              Kommentar


              • #8
                Vergleiche mal Header und Payload von direktem Download und Download durch dein Script. Da muss es ja irgendwelche Unterschiede geben.

                Kommentar

                Lädt...
                X