download starten
Manne
- cgi
0 Frank Schönmann0 manne
0 Cheatah0 Manne
hallo und guten tag,
ich habe mir ein perlscript gebastelt, welches ein
formularfeld daraufhin ueberprueft, ob ein gueltiges passwort eingegeben wurde.
nun soll bei korrektem passwort der download einer
datei automatisch gestartet werden.
mit folgenden zeilen geht das auch:
print "HTTP/1.0 300\n";
print "Location: $downloadfile\n\n";
print "Content-type: application/octet-stream\n";
print "Content-length: ","$filesize","\n";
nun meine fragen
1. ist dies der richtige weg? (nur weil's geht muss es
ja nicht stimmen)
2. laesst sich der download einer datei in einem per
passwort (.htaccess o. aehnlich) geschuetzen
verzeichnis ebenso starten?
gruss an alle und dank im voraus
manne
hi!
print "Content-type: application/octet-stream\n";
print "Content-length: ","$filesize","\n";
Diese beiden Zeilen werden eigentlich gar nicht mehr als HTTP-Header erkannt, da nach dem Location-Header schon eine Leerzeile folgt. Du solltest sie also auch weglassen können.
- ist dies der richtige weg? (nur weil's geht muss es
ja nicht stimmen)
Hm, es soll funktionieren und es funktioniert auch. Wo liegt denn da das Problem?
- laesst sich der download einer datei in einem per
passwort (.htaccess o. aehnlich) geschuetzen
verzeichnis ebenso starten?
Ja, aber natürlich muss dann ein Passwort eingegeben werden. Der Location-Header wird ja nicht serverseitig ausgewertet, sondern auf der Clientseite.
bye, Frank!
hi!
auch hi! und danke
- ist dies der richtige weg? (nur weil's geht muss es
ja nicht stimmen)Hm, es soll funktionieren und es funktioniert auch.
Wo liegt denn da das Problem?
hab einfach rumprobiert und mich gewundert einen weg
gefunden zu haben
Ja, aber natürlich muss dann ein Passwort eingegeben werden. Der Location-Header wird ja nicht serverseitig ausgewertet, sondern auf der Clientseite.
genau dieses 2. passwort wollte ich vermeiden
manne
Hi,
print "HTTP/1.0 300\n";
print "Location: $downloadfile\n\n";
print "Content-type: application/octet-stream\n";
print "Content-length: ","$filesize","\n";nun meine fragen
- ist dies der richtige weg? (nur weil's geht muss es
ja nicht stimmen)
wie Frank schon sagt bringt der Header so nichts. Er ist aber auch nicht nötig, weil der Server alles nötige erledigt. Ein "Location:" bewirkt das gleiche, als würde der Benutzer auf einen Link klicken - Du kannst also alles außer jener Zeile weglassen.
- laesst sich der download einer datei in einem per
passwort (.htaccess o. aehnlich) geschuetzen
verzeichnis ebenso starten?
Wie gesagt gibt es keinen Unterschied zwischen "Location:" und einem Link. Wenn das Verzeichnis passwortgeschützt ist muß der Benutzer also ein Passwort eingeben. Du kannst aber folgenden Weg gehen:
print "HTTP/1.0 300\n";
print "Content-type: application/octet-stream\n";
print "Content-length: $filesize\n";
print "Content-Disposition: filename=$name.zip\n\n"; # Dateiname ist sonst script.pl oder so
open(READ,$datei); # die Datei kann _irgendwo_ auf dem Server liegen, muß also nicht mal über das Internet verfügbar sein!
binmode READ;
binmode STDOUT; # beides ist auf Unix-Servern unnötig, sollte aber dabei sein
while ($line=<READ>) { print $line; }
close(READ);
Cheatah
danke erstmal
print "HTTP/1.0 300\n";
print "Content-type: application/octet-stream\n";
print "Content-length: $filesize\n";
print "Content-Disposition: filename=$name.zip\n\n";
browser meldet dass die datei nicht verfuegbar waere
wo gibt's uebrigens ne doku ueber diese "Content-" geschichten ?
while ($line=<READ>) { print $line; }
zip-datei wird im browserfenster angezeigt
manne
Hi,
print "HTTP/1.0 300\n";
print "Content-type: application/octet-stream\n";
print "Content-length: $filesize\n";
print "Content-Disposition: filename=$name.zip\n\n";browser meldet dass die datei nicht verfuegbar waere
hm... ich benutze das bei mir ohne die erste Zeile. Nimm die einfach mal weg und schau nach, ob's klappt.
wo gibt's uebrigens ne doku ueber diese "Content-" geschichten ?
Keine Ahnung, ich habe mir das auch mühsam zusammengeklaubt :-)
while ($line=<READ>) { print $line; }
zip-datei wird im browserfenster angezeigt
Sollte mit obiger Korrektur verhindert werden. Wenn nicht, ändere den Content-type in application/zip.
Cheatah
hi!
wo gibt's uebrigens ne doku ueber diese "Content-" geschichten ?
RFC 1945 beschreibt das HTTP/1.0-Protokoll und damit auch die passenden Header: http://www.faqs.org/rfcs/rfc1945.html, Abschnitt 10
bye, Frank!