2009-04-17 26 views
0

MVCでファイルをアップロードするために、このコードを使用しました。MVCファイルをアップロードしようとすると問題が発生しました

<form method="post" enctype="multipart/form-data" action="/Task/SaveFile"> 
<input type="file" id="FileBlob" name="FileBlob"/> 
<input type="submit" value="Save"/> 
<input type="button" value="Cancel" onclick="window.location.href='/'" /> 
</form> 

しかし、私がファイルを参照してフォームを送信するとフォーム["FileBlob"]を調べると、????

マルコム

編集:私は、フォームにテキストボックスを追加したと私はその価値の罰金を得ることができます。ちょうど入力タイプのファイルが動作していませんか?

bool errors = false; 
    //this field is never empty, it contains the selected filename 
    if (string.IsNullOrEmpty(forms["FileBlob"])) 
    { 
     errors = true; 
     ModelState.AddModelError("FileBlob", "Please upload a file"); 
    } 
    else 
    { 
     string sFileName = forms["FileBlob"]; 
     var file = Request.Files["FileBlob"]; 
     //'file' is always null, and Request.Files.Count is always 0 ??? 
     if (file != null) 
     { 
     byte[] buf = new byte[file.ContentLength]; 
     file.InputStream.Read(buf, 0, file.ContentLength); 
     //do stuff with the bytes 
     } 
     else 
     { 
     errors = true; 
     ModelState.AddModelError("FileBlob", "Please upload a file"); 
     } 
    } 
    if (errors) 
    { 
     return ShowTheFormAgainResult(); 
    } 
    else 
    { 
     return View(); 
    } 
} 

答えて

2

1回の混乱のセットアップですごい迫力文とNULL値のためには、jQueryの検証を経て、あなたも、サーバー側の検証を行うことができない場合、私は個人的にすべてのものにそのようなことを複雑にすることはありません。代わりに、ここでif(ModelState.IsValid){ return View();}を行うif(errors)をチェックするのより良い解釈は、あなたがそのブールセットアップを取り除くことができますこのよう

http://msdn.microsoft.com/en-us/library/dd410404.aspx

です。

またここにアップロード構造を簡単にimplemenationため

http://blogs.msdn.com/stcheng/archive/2009/03/20/asp-net-how-to-implement-file-upload-and-download-in-asp-net-mvc.aspx

をご確認ください。私はそれを使用して、問題に遭遇しなかった。

0

This answerが役に立ちます。また、アップロードファイルで他のフォームフィールドを投稿しないことをお勧めします。これはユーザーに2つのステップを提供しますが、あなたの最後には単純さの価値があると私に信じてください。

関連する問題