2009-07-23 1 views
2

私はparse_on_demandを使用することを試みた。しかし http://search.cpan.org/~flora/Catalyst-Runtime-5.80007/lib/Catalyst.pm#ON-DEMAND_PARSERContent-LengthまたはMIME-Typeに基づいてCatalystのアップロードを中止するにはどうすればよいですか?示すように

、私がアップロードを停止しているように見えることはできません。これは、アップロードに近づくための正しい方法です

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... 
} 

:私は単にすぐに死ぬアクションを作成することによって、これをテストしています、しかし、ブラウザは、それが今まで自分の行動に到達する前に、私が選択した、非常に大きなファイルをアップロードすると思われます検証?

+0

代わりに 'auto'を修正しなければならないと思います。 –

答えて

2

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

私はCatalystのアップロードに関するエキスパートではありませんが、既にこれを行っているものがあるかもしれないので、cpanで検索する価値があります...しかし、そうでなければ、Upload Progressプラグインが現在のアップロードでステータスを取得します。同様の方法でアップロードを終了することができます。

JayK

1

もHTML :: FormHandler ::それは、検証に組み込まれて以内にあなたのために、これらの両方のケースを処理モデル:: DBICを見てください。

関連する問題