WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 06.05.2003, 03:59   #1
werner2k
Newbie
 
Registriert seit: 05.11.2001
Alter: 65
Beiträge: 4


Frage 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!!
werner2k ist offline   Mit Zitat antworten
Alt 06.05.2003, 12:45   #2
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

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.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 06.05.2003, 15:03   #3
werner2k
Newbie
 
Registriert seit: 05.11.2001
Alter: 65
Beiträge: 4


Standard 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
werner2k ist offline   Mit Zitat antworten
Alt 07.05.2003, 10:19   #4
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Pfeil

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.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 07.05.2003, 17:35   #5
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

"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.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 07.05.2003, 18:38   #6
Philipp
verXENt
 
Benutzerbild von Philipp
 
Registriert seit: 01.08.1999
Beiträge: 7.084

Mein Computer

Standard Re: Perl-Downloadscript

Zitat:
Original geschrieben von werner2k
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).
Dieses Problem hatte ich schon mal, allerdings unter PHP.

Probiere einmal:
Code:
print "Content-disposition: filename=$attch";
Zumindest IE hat machmal Probleme wenn "attachment" in der Content-disposition Zeile steht.
Philipp ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 +2. Es ist jetzt 06:09 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag