Perl Perl_2
Perl 「 モジュール 」 CGI.pm フォーム ファイルアップロードフィールド (0x108)
アップロードフィールド
メソッド「 filefield() 」は、ファイルをアップロードするためのフィールドを提供します。アップロードのためのフィールドがどの様なものか確認します。
なお、このフォームでは、その特性を活かすために、エンコーディングタイプを「 &CGI::MULTIPART 」としておく必要があります。
エンコーディングタイプ「 &CGI::MULTIPART 」は、(0xfd) で確認しました。
filefiled() のコード
メソッド filefield() は次の様に記述します。
print $q->filefield( -name => 'upload',
-default => 'default value',
-size => 50,
-maxlength => 80);
設定するパラメータは、(0x104) で確認したテキストフィールド用のメソッド textfield() とまったく同じですから、次の様に記述することも可能です。
print $q->filefield('upload', 'default value', 50, 80);
1 番目のパラメータ「 -name 」以外はすべてオプションです。この辺りもメソッド textfield() と同じですが、パラメータ「 -default 」に関してはやや注意が必要です。
なぜなら、セキュリティ上の理由から、多くの Web ブラウザは、ファイルフィールドでのデフォルト値をサポートしていないからです。ですから、パラメータの値として何を設定したとしても、Web ブラウザからは無視されます。
このフォームは、JavaScript を利用した次のパラメータを理解するとのことです。
-onChange
-onFocus
-onBlur
-onMouseOver
-onMouseOut
-onSelect
HTML コード
上記 Perl コードから生成される HTML コードは次の通りです。
<input type="file" name="upload" value="default" size="50" maxlength="80" />
input 要素で生成されているということは、テキストフィールドの生成と同様に、メソッド input() が利用出来ます。パラメータは type を利用します。
print $q->input({ -type => 'file',
-name => 'upload',
-default => 'default',
-size => 50,
-maxlength => 80} ));
パラメータ -type では、HTML の input 要素に合わせて「 file 」の文字列を設定します。これで、メソッド filefield() を利用した場合と同様の機能を実現出来ます。
Web ブラウザでの表示
いつのも HTML コードを利用して Web ブラウザ ( Chrome 37.0 ) での表示と動作を確認します。
何やら馴染みのあるボタンが設置されています。少しだけドキドキしながら、[ ファイルを選択 ] ボタンを押下します。するとどうでしょう。これもまたお馴染みのファイル選択画面が現れました。
え、たったこれだけで、ファイルのアップロードが完了するの ? すごーい。
そう思っていた時期が僕にもありました。
0x108 -> 0x109 へ
メソッド filefield() だけでは、ファイルのアップロードは出来ません (キリ。
次回は、ファイルアップロードの基本的な処理を確認します。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)