2016-11-19 10 views
1

こんにちは皆、私は現在、MVC 5を使用して、コードの最初のデータベースを使用してアプリケーションを作成しています。私は現在複数の画像をアップロードするために使用しようとしているコードを示していますが、 System.Web.HttpPostedFileBase 'と入力します。InvalidCastexception複数の画像をアップロード

あなたのお時間をいただきありがとうございます。この問題に関するお手伝いをさせていただきます。

画像HttpFileCollectionの列挙は、ファイルの名前を返しますので、あなたが

foreach (HttpPostedFileBase file in files)

ことを行うことができないコントローラー

// GET: Images/Upload 
      [HttpGet] 
      public ActionResult Upload() 
      { 
       return View(); 
      } 

      // POST: Images/Upload 
      [HttpPost] 
      public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles) 
      { 

        HttpFileCollectionBase files = Request.Files; 
        foreach (HttpPostedFileBase file in files) 
        { 
         int length = file.ContentLength; 
         string type = file.ContentType; 
         string filename = file.FileName; 
        } 
        return RedirectToAction("Upload"); 

      } 

アップロードビュー

@{Layout = null;} 
<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Upload</title> 
</head> 
<body> 
    <form method="post" action="~/Images/Upload" id="form1" enctype="multipart/form-data"> 
        @if (ViewData.Model != null) 
        { 
         foreach (var item in ViewData.Model) 
         { 
          <img src="/Images/@item["Path"]" alt="FileUpload Image" /> 
         } 
        } 

        <input type="file" name="uploadFiles" id="FileUpload" multiple="multiple" /> 

        <input type="submit" name="btnSubmit" value="Upload" id="btnSubmit" />  
    </form> 
</body> 
</html> 
+0

例外メッセージはまた、あなたがキャストしようとしているどのタイプを示しますどの型にキャストすることはできません。それは豪華な援助だ... –

+0

こんにちはアドリアーノ、それは私がSystem.Web.HttpPostedFileBase 'を入力するSystem.String'をキャストしようとしているので、それを言う。これは文字列ではない場合、問題の原因となっているファイル名とタイプです。あなたの時間の代わりに感謝の任意のアイデア – WellThisIsAkward

答えて

0

string )ではなく、HttpPostedFileBaseあなたがループではなく、HttpFileCollectionBase

public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles) 
{ 
     foreach (var file in uploadFiles) 
     { 
      int length = file.ContentLength; 
      string type = file.ContentType; 
      string filename = file.FileName; 
     } 
     return RedirectToAction("Upload"); 
} 

またはforとインデックスを使用使用uploadFilesInvalidCastexception

を得ます:

HttpFileCollectionBase files = Request.Files; 
for (int i = 0; i < files.Count; i++) 
{ 
    int length = files[i].ContentLength; 
    string type = files[i].ContentType; 
    string filename = files[i].FileName; 
} 
関連する問題