html5で複数ファイルアップロード&保存

とても簡単。

html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>

<form action="save.cgi" method="POST" enctype="multipart/form-data">
  <input type="file" name="files" multiple />
  <input type="submit" value="submit" />
</form>

</body>
</html>

input type="file" で multiple属性を追加するだけ。

save.cgi (perl)

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use File::Copy;

my $SAVE_DIR = '/save/dir';  # 保存するディレクトリのパス

my $q = CGI->new;
my @files = $q->param('files');
for my $filename (@files) {
    copy($q->tmpFileName($filename), "$SAVE_DIR/$filename") or die $!;
}

exit;

今までは、複数ファイルが選択できるアップローダーにはFlashが必要だったから、これは非常に便利。