Download



  • Hallo,
    wenn ich auf einer Seite beispielsweise einen Link zu einer cpp-Datei mache, und der Benutzer draufklickt, so wird der Text im Browser angezeigt.
    Wie kann ich aber erreichen, dass nun der Download-Dialog kommt, also so wie bei zip-Dateien?
    Das gleiche gilt für Dateien wie htm, txt...

    Danke für Antworten



  • das hängt von den Browser Einstellungen ab, da *.cpp text/plain ist, wird jeder Browser, der text/plain versteht (das sollte jeder Browser können :)) versuchen die Datei anzuzeigen.

    Da application/zip aber von den wenigsten Browsern verstanden wird 😉 wird eben der Download angeboten (bzw. Mozilla versucht ein externes Programm zu finden, was mit application/zip umgehen kann und bietet auch noch an, dieses Programm dafür aufzurufen).

    Wo ist aber das Problem? Du kannst doch immer noch die Seite speichern.



  • Original erstellt von kingruedi:
    Wo ist aber das Problem? Du kannst doch immer noch die Seite speichern.

    Ich habe keinen Lust, dem Benutzer das mit dem Ziel Speichern unter... dauernd zu erklären.

    Bei manchen gemeinen Seiten kommt bei einem Rechtsklick der Downloaddialog, das ist glaube ich mit JavaScript gemacht.
    kann man das nicht irgendwie in Links umsetzen?



  • du kannst die Code Dateien ja einfach Zippen oder am MIME Typ rumspielen.


  • Mod

    Denk mal an die Benutzer!

    Ich will mir oft garnicht einen SourceCode runter laden, sondern nur Online mal kurz betrachten!

    Wenn ich meinem Browser sage, er solle Plain/Text anzeigen und nicht runterladen, dann hat er mir das auch anzuzeigen. Das geht den Betreiber der Seite nichts an...



  • kannst auch nochmal ins faq schauen

    PHP Download-Script

    vielleicht bringt dir das das gewünschte..



  • Hallo! 😞
    @elise:
    Dadurch wird aber die Datei angezeigt!
    Es sei denn es ist eine ZIP Datei!
    Es wird immer standardmäßig verfahren...

    Wie kann man eine Datei immer runterladen lassen, egal welches Format sie hat?

    MfG MAV



  • Original erstellt von Mis2com:
    Wie kann man eine Datei immer runterladen lassen, egal welches Format sie hat?

    Die Datei WIRD immer runtergeladen! Was danach mit der Datei geschieht, hängt allein davon ab, wie der Browser des Benutzers eingestellt ist. Und wenn da steht, dass text/plain angezeigt werden soll, wird es halt angezeigt - das solltest Du als Web-Author respektieren.



  • Hallo! 🙂
    OK stimmt, das klöappt auch!
    Aber wenn ich von test.php die Datei mopp.exe herunterladen will, dann kommt als erstes:
    test.php was sollen sie damit machen?
    Ich klicke also auf ausführen und erst dann fragt er zu mopp.exe

    😕

    DIV

    MFGMAV



  • Original erstellt von Mis2com:
    test.php was sollen sie damit machen?
    Ich klicke also auf ausführen

    Irgendwie sehe ich jetzt den Zusammenhang zur ursprünglichen Frage nicht (da gings doch um reine Text-Dateien???), aber: Wenn php-Scripte plötzlich clientseitig ausgeführt werden, ist irgendwas ganz gehörig kaputt.



  • wenn er dir PHP Dateien zum Download anbietet, hast du entweder dein PHP Module/CGI nicht installiert oder falsch konfiguriert.

    @BShadow
    versuch irgend wie den MIME Typen der Datei zu ändern, vielleicht zu application/source, aber ich versteh immer noch nicht den Sinn, warum du nicht willst, dass der User sich die Datei direkt im Browser anguckt, also ich (und wahrscheinlich viele andere) würden dann einfach deine Seite verlassen.



  • Also mein Code sieht so aus:

    <?php
    if(isset($dopp))
    {
    
    $download = "file1";
    
    # $download sei der Bezeichner für die zu ladende Datei
    
    # Dieses Verzeichnis liegt außerhalb der Document_Root und
    # ist nicht per URL zuzugreifen.
    $basedir = "html";
    
    # Übersetzung von Download-Bezeichner in Dateinamen.
    $filelist = array(
      "file1" => "engine.bmp",
      "file2" => "engine.bmp",
      "file3" => "engine.bmp"
    );
    
    # Einbruchsversuch abfangen.
    if ($filelist[$download] == "")
      die("Datei $download nicht vorhanden.");
    
    # Vertrauenswürdigen Dateinamen basteln.
    $filename = sprintf("%s/%s", $basedir, $filelist[$download]);
    
    # Passenden Datentyp erzeugen.
    //header("Content-Type: application/zip");
    
    # Passenden Dateinamen im Download-Requester vorgeben,
    # z.B. den Original-Dateinamen
    $save_as_name = basename($filelist[$download]);
    header("Content-Disposition: attachment; filename=\"Mann.bob\"");
    
    # Datei ausgeben.
    readfile($filename);
    }
    else
    {
    ?>
    Hallo! :)
    <a href=<?php echo $PHP_MYSELF;?>?dopp=100>Bezeichnung</a>
    
    <?php
    }
    ?>
    

    Wenn ich alles was darin steht weglasse und via PHP nur eine cho mache, dann wird echon auch ausgeführt.
    So ist es mit allen PHP Befehlen!
    Doch wenn ich auf das Link: Bezeichnung klicke, dann bietet er mir:
    testi.php
    zum download an.
    Wenn ich auf herunterladen gehe, kann ich das runterladen.
    Und wenn ich auf ausführen gehe, bietet er mir die echte Datei zum Download an, die auch runtergeladne werden soll. 😞

    MfG MAV


Anmelden zum Antworten