サイドコンテンツ 【メイン】

推し:加藤安那

加藤安那 (ユメオイ少女)

Twitter: @_hana_celeb_

最新 15 件のエントリー

サイドコンテンツ 【サブ】

ブログ エントリー

  • [perl] ファイルアップロード

    -

    たまにしか使わなくて、すっぽ抜ける事があるのでメモ

    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 です。