2009-07-23 13 views
2

J'ai essayé d'utiliser parse_on_demand comme indiqué dans: http://search.cpan.org/~flora/Catalyst-Runtime-5.80007/lib/Catalyst.pm#ON-DEMAND_PARSERComment abandonner un téléchargement Catalyst basé sur Content-Length ou MIME-Type?

Cependant, je ne peux pas sembler arrêter le téléchargement. Je teste simplement en créant une action qui meurt immédiatement, mais le navigateur semble télécharger le fichier très volumineux que je l'ai choisi avant d'atteindre jamais mon action:

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

Est-ce la bonne façon d'aborder le téléchargement validation?

+0

Je pense que vous devez modifier 'auto' à la place. –

Répondre

2

Catalyst gère le téléchargement avant expédition vers votre action. Vous devrez intercepter plus tôt dans le processus de traitement des demandes et cela signifie un plugin, je suppose.

Je ne suis pas un expert sur les téléchargements avec Catalyst, mais il y a peut-être quelque chose qui fait déjà ça, donc ça vaut la peine d'effectuer une recherche sur cpan ... mais sinon je regarderais comment le plugin Upload Progress fait quoi cela permet d'obtenir un statut sur le téléchargement en cours. Vous devriez être capable de tuer le téléchargement d'une manière similaire.

JayK

1

aussi regarder HTML :: FormHandler :: Model :: DBIC qui gère ces deux cas pour vous dans il est construit dans la validation.