2009-07-23 45 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內它內置的驗證它處理這兩種情況下你。

相關問題