Problem mit downloads

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

  • Problem mit downloads

    Hallöchen!

    ich möchte Usern einen Dowload über eine "download.php" anbieten, da ich so bessere Kontrolle habe.

    Die Download.php besteht aus diesen Elementen:

    PHP-Code:
    $filename="/downloads/intro.mpg";
    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=\"hallo.mpg\";");
    header("Content-Length: ".filesize($filename));
    header("Content-Transfer-Encoding: binary");
    readfile($filename); 
    Klappt auch prima!
    Der Kunde klick rechts auf den Link, dann "speichern unter", und kann das Teil downloaden...
    Doch...
    Eigentlich sollte doch beim Download die Zieldatei gleich "hallo.mpg" heißen..
    Es wird aber defaultmäßg "download.php" (IE) und "download.htm" (firefox) vorgegeben.

    Ich such mich schon ganz strubbelig, kann aber nix finden....


    Please help!

  • #2
    warum machst du dann
    header("Content-Type: application/force-download");
    wenn es video/mpeg ist?
    und auch andere header muss man auch nicht nur copieren sondern auch verstehen was sie machen
    Slava
    bituniverse.com

    Kommentar


    • #3
      Und aus diesem Grunde stellte ich meine Frage....

      Das Ding habe ich so als "Skriptfetzen" im Netz gefunden.
      Es wurde von vielen Usern in den 7. Himmel gelobt...
      Jedoch läuft das bei mir nicht.

      Das dort eigentlich video/mpeg hin muß dachte ich mir schon....
      jedoch kann ich dort hinschreiben was ich will... es läuft nicht.

      Auf einer weiteren Seite habe ich das hier gefunden:

      PHP-Code:
      $filename="downloads/intro.mpg";
      header("Content-Type: video/mpeg");
      header("Content-Disposition: attachment; filename=\"hallo.mpg\";");
      readfile($filename); 
      Auch dass soll wohl klappen.... bei mir aber nicht.

      Gruß...

      Kommentar


      • #4
        PHP-Code:
        header("Content-Type: application/octet-stream"); 
        schon probiert ?

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Hi Tobi!

          Jo... auch schon versucht.
          Der Download geht zwar... Aber default: "download.htm"

          Kommentar


          • #6
            Lass mal die " im Namen der DownloadDatei weg
            http://us3.php.net/manual/de/function.header.php#63867

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              PHP-Code:
              header("Content-type: image/jpg");
              header("Content-type: application/force-download");
              header("Content-type: application/octetstream");
              header("Content-Disposition: attachment; filename=$file"); 
              bei so einer kombination funktioniert es bei mir immer.

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

              Kommentar


              • #8
                Original geschrieben von jahlives
                Lass mal die " im Namen der DownloadDatei weg
                http://us3.php.net/manual/de/function.header.php#63867

                Gruss

                tobi
                Supi!

                Das war es....

                1000 Dank!

                Kommentar


                • #9
                  Hallo,

                  Ich habe auch ein Problem mit einem PHP-Skript für den Download. Mein Ansatz ist allerdings etwas anders als der oben genannte da ich nicht header() sondern fsockopen() nutzen möchte.
                  Da ich mit fscokopen noch nicht soooo die Erfahrung habe, habe ich für die ersten Schritte folgenden Code im Netz gefunden:

                  PHP-Code:
                  $crlf "\r\n";

                  $reg = array (
                          
                  "host" => $host,
                      
                  "content-type" => "x-application/x-octetstream",
                      
                  "pragma" => "cache",
                      
                  "cache-control" => "public, must-revalidate, max-age=0",
                      
                  "accept-ranges" => "bytes",
                      
                  "last-modified" => "Monday, 09-Feb-04 11:34:00 GMT",
                      
                  "content-disposition" => "attachment; filename=".$filename
                  );

                  $header "";
                  foreach (
                  $reg as $key => $val)
                  {
                      
                  $header .= $key.": ".$val.$crlf;
                  }

                  $fp fsockopen ($host80$errno$errstr30);
                  fwrite($fp$header);

                  while(
                  is_resource($fp) && $fp && !feof($fp))
                  {
                      
                  $response .= fread($fp1024);
                  }
                  fclose($fp);

                  echo 
                  $response
                  Das ganze endet aber in einem 400er Fehler im Browser:
                  Bad Request
                  Your browser sent a request that this server could not understand.
                  Invalid URI in request host: www.xxxxxxx.de

                  Und nun weiss ich nicht so ganz was ich falsch gemacht habe weil das Skript angeblich funktionieren soll. Stand zumindest auf der Seite wo ich es her habe.

                  Könnte mir da vielleicht jemand einen Tip geben?

                  PS.: Ja ich weiss, dass man es auch mir der header()-Funktion lösen kann aber ich experimentiere manchmal gerne etwas und probiere aus.
                  Freundliche Grüße
                  avo

                  Kommentar


                  • #10
                    auch wenn du mit fsockopen arbeitest, musst du trotdem header senden, damit der browser weiss, was er entgegen nimmt. also
                    PHP-Code:
                    echo $header;
                    echo 
                    $response
                    gruß
                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Mit deinem Code schickst du die Header-Daten doch im Request an den anderen Server mit - was soll der mit Headern wie
                      content-type, pragma, cache-control, last-modified und content-disposition anfangen?

                      Die gehören m.E. in eine Server Response, nicht in einen Client Request.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Das man fsockopen dazu benutzen kann um Dateien
                        zum Browser zu senden, ist mir vollkommen neu!!

                        Um Dateien von einem andern Server abzuholen, ja, OK, das geht!
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Ah ja. Danke für die Hinweise dann ist alles klar!
                          Freundliche Grüße
                          avo

                          Kommentar

                          Lädt...
                          X