multiple指定してuploadフォーム作るときの話
<input type="file" name="files" multiple />
で複数ファイル選択できるが
Perl CGIで受けるときに↓みたいにすると
my @files = $q->param('files');
for my $filename (@files) {
my $fn = decode("UTF-8", $filename);
move($q->tmpFileName($filename), "/path/to/dir");
}
iOSで選択するとfilenameが全部image.jpgでPOSTされてしまう可能性があるのでダメ
(AndroidとかはOK)
なのでこんな感じにする
my @fhs = $q->upload('files');
my %fname_count;
for my $fh (@fhs){
my $out_filename = non_overlapping_filenames("$fh");
my $io_handle = $fh->handle;
open (my $wr,">", $out_filename) or die $!;
while (<$io_handle>){
print $wr $_;
}
close $wr;
push(@result, decode("UTF-8","$fh"));
}
あと古めのアンドロイドはmultiple指定しても複数ファイル選択ができない
Andoroid4.0はダメだけど6.0だとOKだった