Bild nicht öffnen sondern Speichern

maga147

Erfahrenes Mitglied
Hi,

ich bin auf der Suche nach einem script, mit dem ich ein Bild blei Klick speichern kann.... also sprich dass ein Download fenster aufgeht.
Hab leider im moment überhaupt keinen Ansatz im Kopf, außer, dass es warschl. irgendwelche Header änderungen vornehmen muss..

danke schon aml im Vorraus
 
Hey maga147, du brauchst schon wie du gesagt hast die headerinformation zu ändern. Hier hast du ein kleines Script. Ich hoffe es hilft dir weiter! :)

PHP:
<?
   $file = $_GET['file'];
   header ("Content-type: octet/stream");
   header ("Content-disposition: attachment; filename=".$file.";");
   header("Content-Length: ".filesize($file));
   readfile($file);
   
   /* Weiterer Code oder exit(); */
?>

Du kannst nun das Script mit dem GET Parameter "file" steuern. z.B. dieses_script.php?file=mein_bild.jpg

Gruss Fat-Z
 
Der Inhaltstyp heißt „application/octet-stream“ und nicht nur „octet/stream“. Zudem solltest du unbedingt eine Validierung der übergebenen Eingabedaten vornehmen, damit nicht jede beliebige Datei heruntergeladen werden kann.
 
Jeder macht mal Fehler! Das mit dem octet/stream habe ich nicht gewusst!
Es hieß ein Script zum Downloaden und nicht mit Validation ... ! Man kann das Script vielseitig einsetzen.
Das mit GET war meine Idee. Es könnte ja auch mit POST oder sonst was anderen funktionieren! :rolleyes:

Gruss Fat-Z
 
Um $_GET oder $_POST geht es gar nicht, das Problem dass Gumbo meint, ist dass man jede beliebige Datei laden kann, ergo auch die PHP Dateien. Und da sie beim Download nicht geparst haben, hast du den kompletten Quellcode vor dir, ggf. sogar mit den Datenbank daten.

Deshalb sollte man die Inputs unbedingt validieren bzw. prüfen.
Und auch wenn nicht danach gefragt wird, so sollte man dies tun, alleine schon um dem User zu helfen ;)
 
Danke Funktioniert ;) habs ein bisschen angepasst auf meine bedürfnisse..... Wie soll das mit der Prüfung gehen?
 
Du kannst im a-Tag mit dem "type" Attribut einen DL herbeiführen:
Code:
<a href="bild.jpg" type="application/octet-stream">
 
Zurück