2009-07-23 32 views
2

我试着使用parse_on_demand如图: http://search.cpan.org/~flora/Catalyst-Runtime-5.80007/lib/Catalyst.pm#ON-DEMAND_PARSER如何取消基于Content-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`代替。 – 2009-07-23 13:42:12

回答

2

Catalyst在发送到您的操作之前处理上载。您需要在请求处理过程中尽早拦截,这意味着插件,我怀疑。

我不是催化剂上传的专家,但可能有些东西已经做到了这一点,所以它值得在cpan上进行搜索......但是如果没有,我会看看Upload Progress插件如何做什么它确实获得当前上传的状态。你应该能够以类似的方式杀死上传。

JayK

1

还看HTML :: FormHandler ::型号:: DBIC内它内置的验证它处理这两种情况下你。