Header mit Mime-Type und Dateinamen

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

  • Header mit Mime-Type und Dateinamen

    Ich möchte per PHP einen Registry-Schlüssel erzeugen, den der Anwender herunterladen kann. Das Skript wird in dem Moment aufgerufen, in dem der Anwender einen Link anklickt, der für die Datenbankabfrage nötige Parameter wird mit GET übergeben.

    Ich möchte gerne, daß dann ein Fenster aufgeht, in dem der Browser das übliche "Vor Ort ausführen" und "Auf der Festplatte abspeichern" anbietet.

    Das müßte sich eigentlich machen lassen, indem man mit header() arbeitet. Vom Prinzip her ist ein Registry-Schlüssel ja eine Text-Datei, aber wenn ich eine testweise hochgeladene Datei herunterladen möchte, dann wird xy.reg mit "Content-type: audio/mpeg" angezeigt, und der Browser bietet im Dialogfeld an, die Datei abzuspielen ("Öffnen mit...").

    Korrekt wäre vermutlich als Mime-Typ "text/plain", aber dann wird der Inhalt nicht zum Download angeboten, sondern direkt im Browser angezeigt, was nicht der Sinn der Sache ist. Welcher Mime-Typ wäre empfehlenswert?

    Außerdem wird automatisch im Feld, das nach "Auf Diskette/Festplatte speichern" kommt, der Name des Skriptes angegeben, also "bla.php" anstatt "xy.reg". Gibt es eine Möglichkeit, über die Header den Namen zu verändern?

    Hier erstmal auf die Schnelle das, was ich bisher zusammengezimmert habe (die Plausibilitätsprüfung kriegen wir später, die ist aber ja für die eigentliche Frage irrelevant):
    PHP-Code:
    <?php
    include("dbconnect2.php");

    if (empty(
    $_GET["id"])) exit;
    else 
    $id $_GET["id"];

    $sql "select username, name, secret
    from sip_buddies
    where id = '"
    .$id."'
    limit 1"
    ;

    $result mysql_query($sql) or die(mysql_error());
    $datensatz mysql_fetch_assoc($result);
    extract($datensatz);

    header("Content-type: text/plain");
    //header("Content-type: audio/mpeg");
    ?>
    [HKEY_CURRENT_USER\\Software\\Anwendung]
    "Username"="<?php echo $username?>"
    "Pass"="<?php echo $secret?>"
    "Name"="<?php echo $name?>"
    Das einzige, was mir spontan einfällt, ist eine Lösung mit mod_rewrite, aber ich würde es wenn möglich lieber ohne machen.

    Und ich bin auch nicht ganz sicher, ob es diese Frage ins PHP-Forum gehört, aber hier schien sie mir am besten aufgehoben.


    Ach so, Nachtrag: Content-Disposition scheint für mich ungünstig, da
    There is a bug in Microsoft Internet Explorer 4.01 that prevents this from working. There is no workaround. There is also a bug in Microsoft Internet Explorer 5.5 that interferes with this, which can be resolved by upgrading to Service Pack 2 or later.
    Und die Leute, die es betrifft, verwenden zum Teil ausschließlich IE 5.0.
    Zuletzt geändert von Maschenka; 01.09.2005, 17:56.

  • #2
    Versuch es mal mit etwas derart:
    PHP-Code:
        header("Content-Type: image/jpeg; name=\"".$original_filename."\"");
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: ".$_GET['length']);
    header("Content-Disposition: attachment; filename=\"".$original_filename."\""); 
    header("Expires: 0");
    header("Pragma: no-cache"); 
    Da werden zumindest bei mir auch JPG's als Download angeboten.
    Ganz übesehen, den Content Type musste natürlich entsprechend Deinen Anforderungen ändern
    Und ContentDisposition geht bei mir im IE, Microsoft halt
    Zuletzt geändert von bitesser; 01.09.2005, 18:03.

    Kommentar


    • #3
      code umbrechen, vor dem nächsten post bitte!
      http://www.php-resource.de/forum/sho...threadid=50454
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Nu mal keine Hektik, habe ihn ja überarbeitet, immer dieser Stress

        Kommentar


        • #5
          Ist Content-disposition der einzige Weg außer mit mod_rewrite alle Anfragen an xy.reg auf bla.php umzuleiten?

          Kommentar

          Lädt...
          X