ブログ エントリー
-
[perl] ファイルアップロード
プログラム - 2013/05/14 09:51:59たまにしか使わなくて、すっぽ抜ける事があるのでメモ
uploadfile は HTML の <code><input type="file" name="uploadfile" /></code> の名前。
use strict; use warnings; use utf8; use Encode; use CGI; my $in = CGI->new(); if(my $up_obj = $in->upload('uploadfile')){ my $up_fh = $up_obj->handle(); my $up_tmppath = $in->tmpFileName($up_obj); my $up_filename = $in->param('uploadfile'); my $up_info = $in->uploadInfo($up_filename); close($up_obj); print 'ファイル位置:', tell($up_fh), "\n"; print '->upload() function:', $up_obj, "\n"; print 'ファイルサイズ:', -s $up_fh, 'bytes', "\n"; print 'テンポラリファイル PATH:', decode('utf-8', $up_tmppath), "\n"; print 'アップロードファイル名:', decode('utf-8', $up_filename), "\n"; close($up_fh); foreach my $key (keys(%{$up_info})){ my $val = decode('utf-8', $up_info->{$key}); print $key, ':', $val, "\n"; } }$up_obj はファイルハンドルとしても使えるが、もし何か不具合がある場合は $up_obj->handle() で得られるファイルハンドルを使用すればよい。
$up_obj は使い終わったら close() する。
handle() は多分ファイルを開きなおしてるので、$up_obj を close() しても OK。
テスト検証用スクリプト (Perl) (uploadtest.txt)
テスト用スクリプトの文字コードは UTF-8N です。
-
[perl] ファイルアップロード
http://0pm.0am.jp/memo3/index.cgi?entry=20130514_095159

