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:
1
2
3
4
5
6
7
8
9
10
11
12
my $file = $self->param('upspot');
$file->content_type;
$file->content_length;
$file->filename;
my $content = $file;
PS: Beispiel Hochladen mehrerer Dateien
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){
my $fh = IO::File->new;
$fh->open("c:/temp/".$f->filename, O_CREAT|O_BINARY|O_RDWR) or die $!;
copy( $f->iohandle, $fh ) or die $!;
$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)