Perl GET-Ressource ändern
miggel15
- perl
0 Struppi- html
0 hotti0 Der Martin0 miggel15
Hallo,
ich habe ein Perl-Skript dem ich einen Parameter mitgebe (ID aus einer Datenbank). Mit dieser ID lade ich mir eine binäre Datei aus einer Datenbank und möchte dann diese Datei zurückgeben.
#Skriptname: filegetter.pl
my $q = new CGI;
my $id = $q->param("id");
#in binary befindet sich die Binärdatei
my $binary = &getRessource( $id );
print "Content-type: application/pdf\n\n";
print $binary;
Das passt auch alles soweit und wenn ich eine Ressource aufrufe, so öffnet sich unter Linux auch der Standard-PDF-Leser. Allerdings bleibt der Dateiname filegetter.pl!!! Wie kann ich den Dateinamen nachträglich noch ändern, damit die Datei bspw id.pdf heißt.
Wenn ich die Datei unter Windows als filegetter.pl abspeichere, so kann er sie ja leider nicht mehr öffnen.
Danke schon mal im voraus.
miggel15
print "Content-type: application/pdf\n\n";
print "Content-Disposition: attachment; filename=id.pdf\n";
Ist aber keine Perl Frage.
Struppi.
print "Content-type: application/pdf\n\n";
print "Content-Disposition: attachment; filename=id.pdf\n";
Ist aber keine Perl Frage.
Aber auch keine, die HTML betrifft.
mfg Beat
Hallo,
print "Content-type: application/pdf\n\n";
print $binary;
Das ist soweit ok. Mache vor der Ausgabe noch ein binmode STDOUT;
> Das passt auch alles soweit und wenn ich eine Ressource aufrufe...
Genau hier kommt es auf den UserAgent an und wie du die Ressource referenziert/verlinkt hast. In der Mehrzahl der Fälle dürfte folgender Link die Datei mit dem gewünschten Namen zum Download anbieten:
<a href="$ENV{SCRIPT\_NAME}/mypdf.pdf?download=mypdf.pdf">
wobei $ENV{SCRIPT\_NAME} das Script ist, was die Datei aus der DB holt, hierin kontrollierst Du den Parameter 'download'.
Hotti
Das ist soweit ok. Mache vor der Ausgabe noch ein binmode STDOUT;
Das passt auch alles soweit und wenn ich eine Ressource aufrufe...
Genau hier kommt es auf den UserAgent an und wie du die Ressource referenziert/verlinkt hast. In der Mehrzahl der Fälle dürfte folgender Link die Datei mit dem gewünschten Namen zum Download anbieten:
<a href="$ENV{SCRIPT_NAME}/mypdf.pdf?download=mypdf.pdf">
wobei $ENV{SCRIPT_NAME} das Script ist, was die Datei aus der DB holt, hierin kontrollierst Du den Parameter 'download'.
Hotti
Hallo Hotti,
ich hab das so ausprobiert und es funktioniert genauso wie ich mir es vorstelle. VIELEN DANK!
Auf diesen Ansatz wäre ich nie gekommen....
Gruß
hi,
ich hab das so ausprobiert und es funktioniert genauso wie ich mir es vorstelle. VIELEN DANK!
Auf diesen Ansatz wäre ich nie gekommen....
Ich auch nicht.
SCNR;
Hotti
Hi,
Wenn ich die Datei unter Windows als filegetter.pl abspeichere, so kann er sie ja leider nicht mehr öffnen.
Wer? Und warum nicht?
Okay, natürlich ist .pl eine untypische Endung für PDF-Dokumente. Aber es ist ja nur der Dateiname, und der ist letztendlich ziemlich schnurz. Wenn du Lust hast, kannst du ein PDF-Dokument auch mit der Endung .dll speichern, das hat keinen Einfluss auf die Verwendbarkeit. Es ist nur ein ästhetischer (und vielleicht mnemonischer) Aspekt.
Nur die automatische Assoziation mit dem PDF-Reader durch die Shell gelingt dann natürlich nicht, du musst dann halt explizit angeben, mit welchem Programm die Datei geöffnet werden soll.
Ciao,
Martin
Hi,
Wenn ich die Datei unter Windows als filegetter.pl abspeichere, so kann er sie ja leider nicht mehr öffnen.
Wer? Und warum nicht?
Okay, natürlich ist .pl eine untypische Endung für PDF-Dokumente. Aber es ist ja nur der Dateiname, und der ist letztendlich ziemlich schnurz. Wenn du Lust hast, kannst du ein PDF-Dokument auch mit der Endung .dll speichern, das hat keinen Einfluss auf die Verwendbarkeit. Es ist nur ein ästhetischer (und vielleicht mnemonischer) Aspekt.Nur die automatische Assoziation mit dem PDF-Reader durch die Shell gelingt dann natürlich nicht, du musst dann halt explizit angeben, mit welchem Programm die Datei geöffnet werden soll.
Ciao,
Martin
Danke schon mal für die Antwort ;) Wenn ich die Datei *.pl nenne, dann funktioniert die Verlinkung unter Windows ja nicht mehr (unter Linux ist's ja prinzipiel egal weil da die ersten Bytes entscheidend sind). Trotzdem würde ich gerne die herkömmliche Dateiendung automatisiert bereitstellen können
Gruß