2017-10-07 4 views
0

バイト配列に変換することによって大きな文書(複数)をアップロードするのを助けることができますか?C#MVC - バイト配列を作成する複数の大きなファイルをアップロードする

現在、私のコードはバイト配列なしで動作していますが、ドキュメントが大きい場合はもちろん失敗します。

コントローラー:

[HttpPost] [ValidateAntiForgeryToken] 公共のActionResultの作成(請求書、請求書) {IF(ModelState.IsValid) {リストfileDetails =新しいリスト(); (int i = 0; i < Request.Files.Count; i ++) { var file = Request.Files [i];

  if (file != null && file.ContentLength > 0) 
      { 
       var fileName = Path.GetFileName(file.FileName); 
       FileDetail fileDetail = new FileDetail() 
       { 
        FileName = fileName, 
        Extension = Path.GetExtension(fileName), 
        Id = Guid.NewGuid() 
       }; 
       fileDetails.Add(fileDetail); 

       var path = Path.Combine(Server.MapPath("~/App_Data/Upload/"), 
       fileDetail.Id + fileDetail.Extension); 
       file.SaveAs(path); 

      } 
     } 

     invoice.FileDetails = fileDetails; 
     db.Invoices.Add(invoice); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(invoice); 
} 

とフォーム要素:

すべてのヘルプははるかに高く評価されます。

答えて

0

ソート済み!

[HttpPost] [ValidateAntiForgeryToken] 公共のActionResult( {リストfileDetails =新しいリスト(請求書、請求書) {IF(ModelState.IsValid)を作成します)。

  for (int i = 0; i < Request.Files.Count; i++) 
      { 
       HttpPostedFileBase httpPostedFileBase = Request.Files[i]; 

       if (httpPostedFileBase != null) 
       { 
        Stream stream = httpPostedFileBase.InputStream; 
        BinaryReader bReader = new BinaryReader(stream); 
        byte[] bytes = bReader.ReadBytes((Int32)stream.Length); 
       } 

       HttpPostedFileBase postedFileBase = Request.Files[i]; 

       if (postedFileBase != null) 
       { 
        var fileName = Path.GetFileName(postedFileBase.FileName); 

        FileDetail fileDetail = new FileDetail() 
        { 
         FileName = fileName, 
         Extension = Path.GetExtension(fileName), 
         Id = Guid.NewGuid() 
        }; 
        fileDetails.Add(fileDetail); 
        //Save the Byte Array as File. 
        var path = Path.Combine(Server.MapPath("~/App_Data/Upload/"), 
         fileDetail.Id + fileDetail.Extension); 
        postedFileBase.SaveAs(path); 
        postedFileBase.InputStream.Flush(); 
       } 
      } 

      invoice.FileDetails = fileDetails; 
      db.Invoices.Add(invoice); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(invoice); 
    } 
関連する問題