Yakumo: Formular mit Datei-Upload

Hallo,
also ich hab ein Formular mit dem ich Benutzerdaten einlese und daraus mittels Perl eine Textdatei erstelle. Klappt auch super. Jetzt möchte ich aber noch, dass der User eine Datei mit hochladen kann. Was ich dafür in HTML machen muss, weiß ich schon, aber wie gehe ich mit der Datei in Perl um. Über STDIN geht das doch nicht?

So sieht bisher mein Script aus:

read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
my @Formularfelder = split(/&/, $Daten);
my ($Feld, $Name, $Wert);
my %Formular;
foreach $Feld (@Formularfelder) {
  (my $Name, my $Wert) = split(/=/, $Feld);
  $Wert =~ tr/+/ /;
  $Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $Wert =~ s/</&lt;/g;
  $Wert =~ s/>/&gt;/g;
  $Formular{$Name} = $Wert;
 }
...

  1. ach so... ich hab schon ein Beispiel im www gefunden, aber ich konnt die beiden Scripte nicht vereinen...

    my $cgi = new CGI; # neues Objekt erstellen
    print $cgi->header(-type => 'text/html');
    my $file = $cgi->param("myfile");
    my $fname = $cgi->param('myfile');
    open DAT,'>'.$fname or die 'Error processing file: ',$!;
    binmode $file;
    binmode DAT;
    my $data;
    while(read $file,$data,1024) {
      print DAT $data;
    }
    close DAT;

    Gruß
    Yakumo

  2. Hallo,

    also ich hab ein Formular mit dem ich Benutzerdaten einlese und daraus mittels Perl eine Textdatei erstelle. Klappt auch super. Jetzt möchte ich aber noch, dass der User eine Datei mit hochladen kann.

    der Feature-Artikel Fileupload per Perl/CGI von Christian Kruse sollte Dir weiterhelfen. Weitere für Dich interessante Lektüre ist das Perl-Kapitel von SELFHTML.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      vielen Dank für die Links, aber das Beispiel von Christian Kruse hatte ich auch schon gefunden, ich habs aber leider nicht geschafft, Formulardaten auszuwerten und gleichzeitig mit dieser Datei umzugehen.
      Hinter welcher Variable "versteckt" sich denn die Datei, wenn sie an Perl übergeben wird (ich mein, die Formulardaten kann ich ja auch einzeln auslesen)?

      Gruß
      Yak

    2. juhu ich habs...
      ich hab es einfach auf zwei html-seiten verteilt... geht genau so gut

      dank!