2009-08-05 17 views
2

フォームには必須ではない<input type="file" />が含まれているASP.Net MVCでフォームを開発しています。私のコントローラでASP.Net MVCのファイルアップロードで以前のエラーが発生した場合、Request.File.Countは1に設定されています

、私はこのコードを持っている:

[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"); 
      } 
      ... 
     } 
     ... 
} 

、ユーザーはコンテンツがありませんファイルをアップロードするとき、フォームが例外を発生させ、それをユーザーに促す - 期待されています。

ここで、ユーザーがファイルをもうアップロードせずに[送信]ボタンをクリックすると判断した場合、それまでの例外はまだ表示されますが、これはかなり奇妙です。

Request.Filesの値を確認しようとしましたが、カウントが1に設定されていることに気付きました。ユーザーが<input type="file" />コントロールにファイルを置いていないと仮定すると、まだファイルがあると考えます。

誰かがこれに遭遇しましたか?もしそうなら、前の例外を再実行しないようにするためにどのような手順を実行しましたか?

ありがとうございました!

答えて

0

これを解決する方法を見つけることができました。私がしたのは、入力ファイルコントローラーに値があるかどうかを確認する必要があるということでした。存在する場合はファイルをアップロードし、そうでない場合はそのままにします。

HTH!私は同様のシナリオでは、同じ問題を経験した

+0

コードしてください....... – Luke

4

、私はそれを修正するには、以下のなかった:

if(Request.Files.Count > 0) 
{ 
    if(Request.Files[0].ContentLength > 0) 
    { 
     //Upload the file... 
    } 
} 
関連する問題