2006年3月15日水曜日

FormValidator::Simple::Extension - アップロードファイルのバリデーションなど

前回のエントリでFormValidator::Simpleでアップロードされたファイルのバリデーションができるように拡張したモジュールを書いているといいましたが、それっぽいものができました。

FormValidator-Simpe-Extension-0.01.tar.gz

SimpleのExtensionてどっちやねんという感じですが、アップロードファイルのバリデーション以外に、メッセージをFlaggedなUTF-8にデコードした形でgetできるような機能もつけてみたので、名前をなんにするか悩んだ挙句、とりあえずExtensionにしておきました。使い方はこんな感じです。

>


use FormValidator::Simple::Extension;

## アップロードファイルのバリデーション

FormValiator::Simple::Extension->check( $q, [
thumbnail => [
'UPLOAD_NOT_BLANK', # ファイルがアップされたかどうか
[UPLOAD_FILESIZE,0, 1024], # ファイルサイズは1kBまで
[UPLOAD_FILENAME_REGEX, 'jpe?g|gif|png$'] #画像っぽいファイル名ならOK
],
]);

## メッセージをFlagged UTF-8でうけとる

FormValidator::Simple::Extension->set_messages('messages.yml');
# どんな文字コードからデコードするか文字コードをセット
FormValidator::Simple::Extension->set_message_decode_parms('utf-8');
my $result = FormValidator::Simple::Extension->check($q, $prof);
# メッセージはデコードされる
my $messages = $result->messages;

<

これらの拡張が本家のFormValidator::Simpleに取り込まれたらうれしいのですが、アップロードファイルを取得する方法がApache::Requestのuploadメソッドしか想定してないので、ちょっとマイナー過ぎるきもします。。
CGI.pmのuploadメソッドも考慮したものにすれば、取り込んでもらえるかなー。



2 件のコメント:

  1. ども。
    CGI::AppやCatalystなどのフレームワーク用
    Pluginとの兼ね合いがあるので、
    CGI.pmやCatalyst::Request考慮しつつ
    取り込んでみる方向で頑張ってみます。

    返信削除
  2. katoさんこんにちは!
    取り込んでいただける方向で検討いただけるなんてうれしいです。
    ありがとうございます!
    Catalyst::Requestも考慮に入れないといけませんねー。
    Catalyst::Requestのドキュメント見てみましたが、Apache::Requestのインターフェース+独自メソッドって感じなので、こちらはそのまま使えそうですね。
    CGIのほうはuploadでファイルハンドルを返すので、ファイルハンドルだったらごにょごにょっていう分岐処理をValidationに加えればOKですかねー。

    返信削除