Thread File Upload Datenstruktur
(5 answers)
Opened by rosti at 2018-08-06 09:10
Hallo,
es ist soweit: Was lange gärt wird wut ;) Also ichhabe die Datenstuktur so belassen. Hier http://rolfrost.de/multipart_slice_data.html zum Angucken. Erläuterungen schreiben ich nach der Mittagspause. Ich habe jetzt ca. 3 Jahre über einem neuen Modul als Altrnative zu CGI.pm nachgedacht, da kommt es auf eine halbe Stunde auch nicht mehr an. PS: Neu gegenüber CGI.pm Ist, daß die param()-Methode Objekte bzw. Instanzen der Klasse xCGI::File liefert, was die weitere Verarbeitung hochgeladener Dateien bestimmt. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 # Skalarer Kontext liefert das 1. Dateiobjekt my $file = $self->param('upspot'); # Getter-Methoden für Attribute $file->content_type; $file->content_length; # Original Filename $file->filename; # Dateiinhalt, Overload my $content = $file; PS: Beispiel Hochladen mehrerer Dateien Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 use strict; use warnings; use IO::File; use File::Copy; my $control = sub{ my $self = shift; if( my @files = $self->param('upspot') ){ foreach my $f (@files){ # Handle für die anzulegende Datei my $fh = IO::File->new; # neu mit xCGI.pm $fh->open("c:/temp/".$f->filename, O_CREAT|O_BINARY|O_RDWR) or die $!; copy( $f->iohandle, $fh ) or die $!; # legacy CGI.pm $fh->open("c:/temp/$f", O_CREAT|O_BINARY|O_RDWR) or die $!; copy($f, $fh) or die $!; $fh->close; } $self->{CONTENT} = "Alle Dateien wurden gespeichert!"; } else{ $self->{CONTENT} = "Keine Dateien, aber alles OK!"; } }; Denkbar einfaches Beispiel. Beschreibung auf der Webseite, s.o. Update: Schichtenmodell eklärt, siehe Link. Und ja, das muss sein ;) Update: Der Artikel, Link siehe oben erklärt auch, warum multipart/form-data Schrott ist und somit den Grund zur Entwicklung proprietärer Enctypes! Last edited: 2018-08-17 07:59:10 +0200 (CEST) |