Thread CGI und Dateiname bei Uploads (11 answers)
Opened by bianca at 2013-11-09 08:09

bianca
 2013-11-09 08:09
#171953 #171953
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Im Moment kämpfe ich mit dem selben Problem wie in http://www.perlmonks.org/?node_id=948131 beschrieben.
Irgend etwas verhaut mir beim Upload von Dateien mit dem Firefox und Opera den Dateinamen, sodass die CPAN:Data::Dumper Ausgabe des Namens so aussieht:
bless( \*{'Fh::fh00001meinedatei.jpg'}, 'Fh' )
Ich hole den Dateinamen so:
(my $dateiname = $cgi->param('upload')) =~ s/^.*[\\\/]//g;
Mit dem Internet Explorer funktioniert das alles fehlerfrei.

Seltsamerweise zeigt mir eine Ausgabe von length() sowohl für param('upload') als auch für $dateiname den selben korrekten Wert an. Es sind genau die 14 Zeichen von meinedatei.jpg. Warum zeigt der Dumper trotzdem etwas anderes an? Ich verstehe nicht, was da genau vor sich geht.

Gemerkt habe ich das auch nur zufällig, weil der Dateianme Teil eines Arrays ist, was ich später noch mit CPAN:JSON ausgeben will. Und CPAN:JSON hat sich beschwert: encountered object 'meinedatei.jpg', but neither allow_blessed nor convert_blessed settings are enabled at /meinscript.pl line x
Die übrige Weiterverarbeitung der Variable klappt ansonsten wunderbar.

Aber so ganz habe ich die dortigen Lösungen nicht verstanden. Ist das tatsächlich noch immer ein Bug in CPAN:CGI? Ich setze Version 3.63 ein und dort ist die Rede von 3.49. Das ist auch knapp zwei Jahre her.
Wie würdet ihr das aktuell lösen?
10 print "Hallo"
20 goto 10

View full thread CGI und Dateiname bei Uploads