blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_2

Perl 「 モジュール 」 CGI.pm フォーム ファイルアップロードフィールド (0x108)

Perl 「 モジュール 」 CGI.pm フォーム ファイルアップロードフィールド (0x108)

目次 - Perl Index



Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x108 回。

CGI.pm で、ファイルアップロードフィールドを作成する。



アップロードフィールド



メソッド「 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 ) での表示と動作を確認します。

Perl 「 モジュール 」 CGI.pm フォーム ファイルアップロードフィールド (0x108)

何やら馴染みのあるボタンが設置されています。少しだけドキドキしながら、[ ファイルを選択 ] ボタンを押下します。するとどうでしょう。これもまたお馴染みのファイル選択画面が現れました。

Perl 「 モジュール 」 CGI.pm フォーム ファイルアップロードフィールド (0x108)

え、たったこれだけで、ファイルのアップロードが完了するの ? すごーい。

そう思っていた時期が僕にもありました。


0x108 -> 0x109 へ



メソッド filefield() だけでは、ファイルのアップロードは出来ません (キリ。

次回は、ファイルアップロードの基本的な処理を確認します。


参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index













同じカテゴリー(Perl)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲