2

http://search.cpan.org/~flora/Catalyst-Runtime-5.80007/lib/Catalyst.pm#ON-DEMAND_PARSERに示すように、parse_on_demandを使用しようとしました。

ただし、アップロードを停止できないようです。すぐに終了するアクションを作成するだけでこれをテストしていますが、ブラウザーは、アクションに到達する前に、選択した非常に大きなファイルをアップロードしているようです。

sub upload :Local {
    my ($self, $c) = @_;
    die;

    # What I'd like to do is this:
    # if ($c->req->header('Content-Length') > $some_limit) {
    #    die "Upload too large";
    # }
    # ... check filename extension and mime-type...
}

これは、アップロードの検証に取り組む正しい方法ですか?

4

2 に答える 2

2

Catalystは、アクションにディスパッチする前にアップロードを処理します。リクエスト処理プロセスの早い段階でインターセプトする必要があります。これはプラグインを意味すると思います。

私はCatalystを使用したアップロードの専門家ではありませんが、すでにこれを行っているものがある可能性があるため、cpanで検索する価値があります...しかし、そうでない場合は、UploadProgressプラグインがどのように機能するかを調べます。現在のアップロードのステータスを取得します。同様の方法でアップロードを強制終了できるはずです。

JayK

于 2009-07-24T17:31:11.780 に答える
1

また、組み込みの検証内でこれらの両方のケースを処理するHTML :: FormHandler :: Model::DBICも確認してください。

于 2011-07-04T04:17:36.107 に答える