Forum Doku Wiki Blog

Forumsarchiv 1999, April
download starten

archivierte Beiträge lesen

  1. (CGI) download starten von Manne, 16. 04. 1999, 17:38

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 17:38 Uhr von Manne veröffentlicht.

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

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 17:41 Uhr von Frank Schönmann veröffentlicht.

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.

> 1. 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?

> 2. 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!

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 19:40 Uhr von manne veröffentlicht.

> hi!

auch hi! und danke

> > 1. 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

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 19:08 Uhr von Cheatah veröffentlicht.

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
> 1. 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.

> 2. 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

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 19:32 Uhr von Manne veröffentlicht.

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

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 19:52 Uhr von Cheatah veröffentlicht.

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

download starten

Der folgende Beitrag wurde am 16. 04. 1999, 22:40 Uhr von Frank Schönmann veröffentlicht.

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!

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4