![]() |
Perl-Downloadscript
Für eine Webanwendung habe ich eine Kette von Perl-Scripts geschrieben, unter anderm den folgenden Code für das Download von Dateien:
use strict; use common; use Mail::POP3Client; use MIME::Parser; use configwm; use CGI; use nswmauth; #obtain the FORM information that has been passed by using #the param() method of the cgi object. my $query=new CGI; my $nswmc=new common; my $nswmau = new nswmauth; my $loginname = $query->param("loginname"); my $pkey = $query->cookie(-name=>'PKEY'); my $password = $query->param("password"); # encrypted password !!! my $POPserver = $query->param("POPserver"); my $msgid = $query->param("id"); my $cache = $query->param("cache"); my $browser = $ENV{'HTTP_USER_AGENT'}; $|=1; # authenticate for download if ($nswmau->isAuthOK($loginname,$nswmc->decryptit($password,$query->cookie("PKEY")),$POPserver)==0) { print "</HEAD><BODY>"; print "<font size=+1>$POPserver: $loginname, $conf::incorrectlogin"; exit; } my $attch = $query->param("file"); my $mimetype=$nswmc->mimetype($attch); # do the download print "Content-type: $mimetype\n\n"; print "Content-disposition: attachment; filename=$attch"; print "\r\n" if (!$conf::modperl); open(ATTCH, "<$conf::temppath/$attch"); binmode ATTCH; while(<ATTCH>) { print $_; } close(ATTCH); exit; Er funktioniert recht gut - nur erscheint im "Save-as"-Fenster des Browsers (egal ob Opera oder IE) als Dateiname immer der Name des aufgerufenen CGI-Files (gespeichert wird allerdings die korrekte Datei). Weiss jemand Rat?? Danke im Voraus!! |
Ich gehe davon aus, dass im HTML-Code des Clients für den Parameter 'file' ein Wert eingetragen wird. Für den <A>Anchor</A> müsstest du jetzt bereits auf Client-Seite den Namen des 'file' einsetzen. Ich weiss ja nicht, wie deine HTML-Seite für den Client aussieht, z.B.ob da ein Button gedrückt werden muss.
|
Clientseitiger Auslöser des Scripts
Den clientseitigen Auslöser habe ich glatt vergessen zu posten - so ab 4:00 werden die Gedanken flach ....
Das cgi-script wird über einen Link aufgerufen, der folgendermasen aussieht: Filename |
Der Browser nimmt immer die Informationen aus dem <a href="file.xyz"> .
D.h. du müsstest bereits diese Client-HTML-Seite über ein Perl-Skript erzeugt haben, damit der FILE-Name dort steht! Zerlege also dein CGI-Skript in 2 Teile bzw. gib eine HTML-Seite an, wo der FILE-Name im Anchor vorkommt. Eine andere Variante wäre, mit JavaScript ein entsprechendes Fenster zu öffnen, in welchem ein verwendbarer Anchor mit FILE-Name ausgegeben wird. |
"Content-Disposition is not part of the HTTP standard ..."
http://www.w3.org/Protocols/rfc2616/...5.html#sec15.5 Daher wundert es mich nicht, dass es nicht klappt. |
Re: Perl-Downloadscript
Zitat:
Probiere einmal: Code:
print "Content-disposition: filename=$attch"; |
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag