miggel15: Perl GET-Ressource ändern

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

  1. print "Content-type: application/pdf\n\n";

    print "Content-Disposition: attachment; filename=id.pdf\n";

    Ist aber keine Perl Frage.

    Struppi.

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

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
  2. 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
    
    1. 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ß

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

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

    --
    Der Sinn einer Behörde besteht in ihrer Existenz.
      (alte Beamtenweisheit)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. 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ß