2009-08-05 3 views
2

Je développe un formulaire dans ASP.Net MVC où il contient un <input type="file" /> qui n'est pas obligatoire dans un formulaire.Request.File.Count est toujours défini sur 1 lorsque le téléchargement de fichier dans ASP.Net MVC a rencontré une erreur précédente

Dans mon contrôleur, j'ai ce code:

[AcceptVerbs(HttpVerbs.Post)] 
[ValidateInput(false)] 
public ActionResult Create(FormCollection collection) { 
     ... 

     //get uploaded file 
     if (Request.Files.Count > 0) 
     { 
      file = Request.Files["imgFileUpload"]; 
      if (file.ContentLength == 0) 
      { 
       throw new InvalidOperationException("File contents are empty"); 
      } 
      ... 
     } 
     ... 
} 

Maintenant, lorsqu'un utilisateur télécharge un fichier qui n'a pas de contenu, la forme soulèverait une exception et invite l'utilisateur à ce sujet - qui devrait .

Maintenant, si un utilisateur décide qu'il ne téléchargera plus aucun fichier et cliquera sur le bouton de soumission, l'exception précédente s'affichera toujours, ce qui est assez bizarre.

J'ai essayé de vérifier les valeurs pour Request.Files et j'ai remarqué que son compte est toujours à 1 ... il pense toujours qu'il y a un fichier là, étant donné que l'utilisateur n'a placé aucun fichier sur le contrôle <input type="file" />.

Quelqu'un a-t-il déjà rencontré ce problème? Dans l'affirmative, quelles mesures avez-vous prises pour empêcher la réexécution de l'exception précédente?

Merci beaucoup!

Répondre

0

Juste réussi à trouver un moyen de résoudre ce problème. Ce que j'ai fait, c'est que j'ai besoin de vérifier si le contrôleur de fichier d'entrée a des valeurs dessus. Si c'est le cas, téléchargez le fichier, sinon laissez-le tel quel.

HTH!

+0

s'il vous plaît ....... – Luke

4

Je viens de vivre la même question dans un scénario similaire, je l'ai fait ce qui suit pour le fixer:

if(Request.Files.Count > 0) 
{ 
    if(Request.Files[0].ContentLength > 0) 
    { 
     //Upload the file... 
    } 
} 
code
Questions connexes