1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[ { "name": "name", "value": "foo" }, { "name": "name", "value": "bär" }, { "name": "upspot", "value": {}, "filename": "15.01.2005_004.jpg", "type": "image/jpeg", "size": 31977 }, { "name": "upspot", "value": {}, "filename": "15.01.2005_009.jpg", "type": "image/jpeg", "size": 25635 } ]
QuoteMal laut gedacht: Die Trennung auf eine dediziertes FILE Array hat ja den Vorteil, daß man mit einem Griff prüfen kann, ob überhaupt Dateien hochgeladen wurden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
# 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, quasi __toString() my $content = $file; # Neu in multipart/slice-data $file->mtime; # liefert die lokale LastModified # der Datei in Sekunden # Localtime anschaulich in $file->mtime_local # z.B. Wed Dec 11 13:01:42 2013 Wenn <input type="file" multiple> gesetzt wurde, liefert die param()-Methode also mehrere Instanzen.
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;
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!"; } };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[
{
"name": "control",
"value": "1"
},
{
"name": "name",
"value": "foo"
},
{
"name": "name",
"value": "bär"
},
{
"name": "upspot",
"value": {},
"filename": "ehmetsklinge.jpg",
"content_type": "image/jpeg",
"content_length": 11761,
"mtime": 1386765476
},
]