Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem bei Download

Einklappen

Neue Werbung 2019

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

  • Problem bei Download

    Hallo,

    Ich habe hier ein kurzes PHP-Script zum download einer Datei. Bisher habe ich es nur für Bilder im JPG-Format vorgesehen.

    Aber hier erst mal das Script:

    PHP-Code:
    <?php

                
    /*
                    * Der Ordner indem sich die Dateien befinden
                */
                
    $download_dir "./uploads/";
                
    $id $_GET['id'];

                
    /*
                    * Die herunterladbaren Dateien:
                */
                
    $files = array(
                    
    "$id=> "$id.jpg",
                );

                
    /*
                    * Den kompletten Pfad der Datei (+Dateiname) in $file speichern
                */
                
    $file $download_dir.$files[$_GET['id']];

                
    /*
                    * Header-Einstellungen
                */
                
    header("Content-Type: x-type/subtype");
                
    header("Content-Length: ".filesize($file));
                
    header("Content-Disposition: attachment; filename=".$files[$_GET['id']]);

                
    /*
                    * Das "Speichern-Unter"-Fenster erscheinen lassen
                */
                
    readfile($file);


            
    ?>
    Mein Problem ist jetzt das es auch in soweit funktioniert das die angepeilte Datei gedownloadet wird, jeden kann ich diese nach dem Download nicht öffnen, sondern erhalt von Photoshop z.B. die Meldung das die Datei nicht vollständig ist.

    Hat einer von euch evtl. eine Idee woran es liegen könnte und wie ich es gegebenenfalls Lösen kann ???

    Bin nämlich durch suchen bei Goggle nicht viel schlauer geworden, da die Probleme und Lösungen die da genannt wurden nicht funktioniert haben.

    Danke schon mal fürs durchlesen.

    MFG
    MsMagiczZ

  • #2
    Hast du denn mal die Dateigröße überprüft?
    Wenn diese kleiner ist als die Quelldatei auf dem Server, mach diese mal mit 'nem Editor auf und guck ob am Ende sowas wie "Fatal Error" steht.
    Wenn nicht schalte das Error Reporting von PHP an und guck dann nochmal nach Fehlern die im Plaintext in der Datei landen.

    Meine Glaskugel sagt mir aber: memory_limit wird überschritten.

    Kommentar


    • #3
      Falls du vor hast, das Skript öffentlich zugänglich zu machen: http://php.net/manual/de/security.fi....nullbytes.php

      Edit: Mit einer Whitelist ist das natürlich überflüssig.

      Kommentar


      • #4
        Vielleicht seitens PHP ein Limit (bzgl. Dateigröße) überschritten?

        Kommentar


        • #5
          readfile
          fpassthru

          Und
          PHP-Code:
          header("Content-Type: x-type/subtype"); 
          ist bestimmt auch keine korrekte angabe eines Content-Type.

          Probiers mit

          PHP-Code:
          header("Content-Type: image/png"); 
          bzw

          PHP-Code:
          header("Content-Type: image/jpeg"); 

          Kommentar


          • #6
            Hi,
            ich kopier dir mal ein abgespecktes Download Skript rein

            PHP-Code:
            <?php 
            $file 
            $_REQUEST["Dateiname"];
            $format $_REQUEST["Format"];
            $dir="Dein Verzeichnis";
            switch(
            $format)
            {
             case 
            'pdf'$type 'application/pdf';
             break;
             case 
            'doc'$type 'application/msword';
             break;
             case 
            'txt'$type 'text/plain';
            }
               
            $file=$file.$format;
               
            header("Content-Type: $type");
                
            header("Content-Disposition: attachment; filename=\"$file\"");
                
                
            readfile($dir.$file);
                
            flush();
            ?>
            Ich hatte damals das Problem, dass vor dem <?php Tag ein Zeilenumbruch drin war und deswegen auch Dateien unvollständig heruntergeladen wurden.
            Mit was programmierst du? Mach dein Skript evtl. mal mit nem Notepad auf.

            Ich hoffe ich konnte dir helfen
            Grüße Hitman81

            Kommentar


            • #7
              Zitat von hitman81 Beitrag anzeigen
              Hi,
              ich kopier dir mal ein abgespecktes Download Skript rein
              Cool. Man kann jede Datei herunterladen die sich auf dem Server befindet und auf die PHP lesend zugreifen kann.

              Kommentar


              • #8
                Hi hitman81,

                Ich Programmiere mit Scriptly

                Finde die Funktion, dass Code-Automatisch vervollständigt wird, für noch Anfänger wie mich serh hilfreich.

                Kommentar


                • #9
                  Also: Ich habe noch mal fast alles Überprüft.

                  Also am Upload kann es nicht liege, da die Datei die komplette größe auch auf dem Server vorweist!

                  Ein Limit Seitens PHP kann ich auch eigentlich ausschließen, da ich das Memory-Limit auf eine, für die Test, mehr als ausreichende größe gesetzt habe ...

                  Das ich falsche Einstellungen am Header habe, kann ich nicht ausschließen, jedoch habe ich das selbe Problem nachdem ich die Header-Einstellungen wie vorgeschlagen geändert habe ...

                  Kommentar

                  Lädt...
                  X