Sony Advertising
Amazon
Forum für die Fotosysteme von Sony und KonicaMinolta
  SonyUserforum - Forum für die Fotosysteme
von Sony und KonicaMinolta
 
Registrieren Rund ums Bild Galerie Objektiv-Datenbank Kalender Forenregeln Nützliches

Startseite » Forenübersicht » Treffpunkt » Café d`Image » Link zum Download eines Bildes setzen - wie?
Antwort
 
Themen-Optionen Ansicht
Alt 23.09.2007, 20:16   #1
Bendix
 
 
Registriert seit: 24.10.2004
Ort: Berlin-Lichterfelde
Beiträge: 974
Link zum Download eines Bildes setzen - wie?

Hallo!

Ausgangslage:
Ich biete Bekannten ein paar Bilder online zum Anschauen an. Gleichzeitig sollen sie die Möglichkeit zum Download einer printfähigen Dateigröße erhalten. Dazu setze ich einen Button mit Link auf die größere Datei.

Problem:
Mir fehlt der PHP-Code, mit dem ich für so ein Bild einen Download setzen kann, der den Dialog "Speichen unter" öffnet, aber nicht das Bild im Fenster öffnet. Ich habe die Bilder wohlgemerkt nicht in einer Datenbank (wie hier das Forum), sondern ganz profan im Verzeichnis liegen.
Geht das überhaupt mit ein bisschen PHP-Code unter dem Button oder komme ich um eine größere Lösung nicht drumrum?

Herzlichen Dank schonmal,
Ralf
__________________
www.disclaimerfrei.de - Für ein Web ohne Blabla
www.tomcat06.de - Geocaching, that's fun!

Bendix ist offline   Mit Zitat antworten
Sponsored Links
Alt 23.09.2007, 20:34   #2
baerlichkeit
 
 
Registriert seit: 02.11.2006
Ort: Berlin
Beiträge: 11.088
Hallo Ralf,

eine ganz pragmatische Lösung, die immer funktioniert

Setze den Link rein und schreibe in Klammern dahinter (rechte Maustaste - Bild speichern unter) oder sowas...

Ansonsten, wenn du die eh händisch hochlädst. Verpack sie doch als ZIP, dann sollte der Browser automatisch den speichern-Dialog anzeigen...

Viele Grüße
Andreas
__________________
abgedunkelt.de
baerlichkeit ist offline   Mit Zitat antworten
Alt 23.09.2007, 20:53   #3
Bendix

Themenersteller
 
 
Registriert seit: 24.10.2004
Ort: Berlin-Lichterfelde
Beiträge: 974
Zitat:
Zitat von baerlichkeit Beitrag anzeigen
Hallo Ralf,
eine ganz pragmatische Lösung, die immer funktioniert

Setze den Link rein und schreibe in Klammern dahinter (rechte Maustaste - Bild speichern unter) oder sowas...
...dann klicken einige wieder ins Bild. Und der "Speichern unter.."-Text lautet in jedem Browser anders. Schon die Menüauswahl unter der rechten Maustaste wird einige verwirren. Ich suche nach der für den Besucher einfachsten Lösung: Klick auf den Button, bestätigen (nochmal Klick) - und fertig.

Zitat:
Zitat von baerlichkeit Beitrag anzeigen
Ansonsten, wenn du die eh händisch hochlädst. Verpack sie doch als ZIP, dann sollte der Browser automatisch den speichern-Dialog anzeigen...
...dann müssen die wieder mit ZIP umgehen können. Vielen ist das kein Problem. Aber wozu habe ich einen Computer, wenn ich mit Workarounds arbeiten muss? Ich suche nach wie vor nach der 2-Klick-Lösung. Vielleicht gibts hier ja einen Spezi, der das drauf hat.

Dank & Gruß,
Ralf
__________________
www.disclaimerfrei.de - Für ein Web ohne Blabla
www.tomcat06.de - Geocaching, that's fun!

Bendix ist offline   Mit Zitat antworten
Alt 23.09.2007, 21:56   #4
baerlichkeit
 
 
Registriert seit: 02.11.2006
Ort: Berlin
Beiträge: 11.088
Hallo Ralf,
ich verstehe, also eine wasserdichte Lösung...

Ich habe so meine Zweifel, dass das geht, es wird immer irgendeinen Browser geben, der da rum zickt...

Aber hier kannst du ja mal lesen, vielleicht ist es das was du suchst?

http://www.php-faq.de/q/q-datei-download.html

Viele Grüße
Andreas
__________________
abgedunkelt.de
baerlichkeit ist offline   Mit Zitat antworten
Alt 24.09.2007, 09:06   #5
Tobi.
 
 
Registriert seit: 24.08.2005
Ort: Paderborn
Beiträge: 5.337
Zitat:
Zitat von Bendix Beitrag anzeigen
Mir fehlt der PHP-Code, mit dem ich für so ein Bild einen Download setzen kann, der den Dialog "Speichen unter" öffnet, aber nicht das Bild im Fenster öffnet. Ich habe die Bilder wohlgemerkt nicht in einer Datenbank (wie hier das Forum), sondern ganz profan im Verzeichnis liegen.
Mal so als spontane Idee, kaum getestet:
Code:
<?php
// Pruefen, ob der Parameter 'bild' beim Aufrufen des Skripts gesetzt wurde
if (isset ($_GET['bild']))
	$bild = $_GET['bild'];
elseif (isset ($_POST['bild']))
	$bild = $_POST['bild'];

if (isset ($bild)) {
	// Pruefen, ob es sich um ein jpg handelt und ob der Nutzer nicht versucht,
	// sich in einen anderen Ordner zu hangeln
	if (is_file ($bild) && strpos ($bild, '/') == 0 && strpos ($bild, 'jpg') != 0) {
		
		// Laden des Bildes
		$ausgabe = imagecreatefromjpeg ($bild);
		
		// Header an den Browser schicken
		header ("Content-type: image/jpeg");
		header ("Content-Disposition: attachment; filename=".$bild.".jpg");
		
		// Bild an den Browser schicken
		imagejpeg ($ausgabe);
	}
	else
		echo ("Keine erlaubte Datei!");
}

?>
Du musst das in einer Datei speichern und diese dann mit ?bild=foto.jpg aufrufen oder den Parameter 'bild' als post übermitteln, also mit einem Formular. Beide Wege sollten klappen.

HTH
Tobi
Tobi. ist offline   Mit Zitat antworten
Sponsored Links
Alt 24.09.2007, 14:52   #6
Bendix

Themenersteller
 
 
Registriert seit: 24.10.2004
Ort: Berlin-Lichterfelde
Beiträge: 974
@Tobi:
Vielen Dank
Das ist das erste Skript dieser Art, das überhaupt sowas ähnliches macht was ich suche. Auf den zahlreichen Internetseiten zu PHP-Skripten habe ich reichlich Schnickschack gefunden, den ich nicht brauche.

Dieses Skript funzt im Prinzip, zeigt aber 3 Merkwürdigkeiten:
1. Es öffnet sich ein weiteres, leeres Browserfenster
2. Das Bild erhält eine weitere Endung '.jpg', also doppelt
3. Das Bild wird zwar komplett heruntergeladen, hat aber nur noch die halbe Dateigröße. Das ist einerseits löblich, aber ich kontrolliere die Dateigrößen gern selbst und hatte sie bereits größenoptimiert.

Hast du das selbst geschrieben oder irgendwoher? Die Sicherheitsfeatures brauche ich übrigens nicht, die könnten raus.

@baerlichkeit:
Die Köhntopp-Seite bietet sowas ähnliches, aber zu umständlich für mich. Die Beschreibung wurde mir auch nicht ganz klar, ich bin (noch) kein PHP-Kenner.

Gruß, Ralf
__________________
www.disclaimerfrei.de - Für ein Web ohne Blabla
www.tomcat06.de - Geocaching, that's fun!


Geändert von Bendix (24.09.2007 um 14:57 Uhr)
Bendix ist offline   Mit Zitat antworten
Alt 24.09.2007, 15:29   #7
Tobi.
 
 
Registriert seit: 24.08.2005
Ort: Paderborn
Beiträge: 5.337
Zitat:
Zitat von Bendix Beitrag anzeigen
Dieses Skript funzt im Prinzip, zeigt aber 3 Merkwürdigkeiten:
1. Es öffnet sich ein weiteres, leeres Browserfenster
Das liegt wohl an deiner Einbindung -- hier kann ich das nicht provozieren. Ich lade einfach die Datei in Opera direkt (Als http://localhost/misc/bild.php?bild=bild.jpg), dabei wird das im gleichen Fenster geöffnet.
Zitat:
2. Das Bild erhält eine weitere Endung '.jpg', also doppelt
Das lag am .jpg im zweiten header(), jetzt isses weg (siehe unten).
Zitat:
3. Das Bild wird zwar komplett heruntergeladen, hat aber nur noch die halbe Dateigröße. Das ist einerseits löblich, aber ich kontrolliere die Dateigrößen gern selbst und hatte sie bereits größenoptimiert.
Ja, das liegt am einlesen als Bild in php und dann ausgeben. Die von baerlichkeit verlinkte Lösung mit readfile() ist wesentlich eleganter, denn da wird garantiert nichts verändert. readfile() reicht die Datei einfach geradewegs durch.
Hier mein Skript damit:
Code:
<?php
// Pruefen, ob der Parameter 'bild' beim Aufrufen des Skripts gesetzt wurde
if (isset ($_GET['bild']))
	$bild = $_GET['bild'];
elseif (isset ($_POST['bild']))
	$bild = $_POST['bild'];

if (isset ($bild)) {
	// Pruefen, ob es sich um ein jpg handelt und ob der Nutzer nicht versucht,
	// sich in einen anderen Ordner zu hangeln
	if (is_file ($bild) && strpos ($bild, '/') == 0 && strpos ($bild, 'jpg') != 0) {

		// Header an den Browser schicken
		header ("Content-type: image/jpeg");
		header ("Content-Disposition: attachment; filename=".$bild);
		readfile ($bild);
	}
	else
		echo ("Keine erlaubte Datei!");
}

?>
Zitat:
Hast du das selbst geschrieben oder irgendwoher?
Das habe ich mir spontan aus den Fingern gesogen, sozusagen zum Wachmachen heute morgen.
Zitat:
Die Sicherheitsfeatures brauche ich übrigens nicht, die könnten raus.
Ich halte Sicherheitsfeatures für wichtig, weil man sonst jede Menge quatsch mit einem solchen Skript machen könnte. Man könnte zum Beispiel "../index.php" übergeben und sich damit deine index.php als Klartext übertragen lassen, was du ja sicherlich nicht möchtest. Außerdem sind sie bereits drin und fressen nichts...

Tobi
Tobi. ist offline   Mit Zitat antworten
Alt 24.09.2007, 20:25   #8
Bendix

Themenersteller
 
 
Registriert seit: 24.10.2004
Ort: Berlin-Lichterfelde
Beiträge: 974
Danke, Sir Tobi, das klappt prima. Die Öffnung eines neuen Fensters/Tabs kam, weil ich noch "target='_blank'" stehen hatte.

Das war ja direkt eine honorarfähige Auftragsleistung. Machst du sowas den ganzen Tag? Ich würde dir im Gegenzug gern einen Gefallen tun, wenns denn je dazu käme.

Gruß, Ralf
__________________
www.disclaimerfrei.de - Für ein Web ohne Blabla
www.tomcat06.de - Geocaching, that's fun!

Bendix ist offline   Mit Zitat antworten
Alt 24.09.2007, 20:34   #9
Tobi.
 
 
Registriert seit: 24.08.2005
Ort: Paderborn
Beiträge: 5.337
Zitat:
Zitat von Bendix Beitrag anzeigen
Das war ja direkt eine honorarfähige Auftragsleistung.
Nö, das war gerade richtig heute morgen. :-)
Zitat:
Machst du sowas den ganzen Tag?
Nein, eigentlich nicht. Nur gelegentlich, aber dann JSP und nicht php.
Zitat:
Ich würde dir im Gegenzug gern einen Gefallen tun, wenns denn je dazu käme.
Eigentlich ists nicht nötig, aber bei Bedarf komme ich gerne darauf zurück. :-)

Tobi
Tobi. ist offline   Mit Zitat antworten
Antwort
Startseite » Forenübersicht » Treffpunkt » Café d`Image » Link zum Download eines Bildes setzen - wie?


Forenregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.