2

我尝试使用 parse_on_demand,如下所示: http ://search.cpan.org/~flora/Catalyst-Runtime-5.80007/lib/Catalyst.pm#ON-DEMAND_PARSER

但是,我似乎无法停止上传。我只是通过创建一个立即终止的操作来测试这个,但是浏览器似乎在它到达我的操作之前上传了我选择的非常大的文件:

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 上搜索......但如果没有,我会看看Upload Progress插件是如何做到的获取当前上传的状态。您应该能够以类似的方式终止上传。

周杰伦

于 2009-07-24T17:31:11.780 回答
1

另请查看 HTML::FormHandler::Model::DBIC,它在内置验证中为您处理这两种情况。

于 2011-07-04T04:17:36.107 回答