2017-10-07 3 views
0

Est-ce que quelqu'un pourrait m'aider à télécharger de gros documents (multiples) en les convertissant en tableau d'octets?C# MVC - chargement de plusieurs fichiers volumineux créant un tableau d'octets

Mon code fonctionne actuellement sans le tableau d'octets mais il échoue bien sûr si les documents sont volumineux.

Controller:

[HttpPost] [ValidateAntiForgeryToken] public ActionResult Créer (facture de facture) { if (ModelState.IsValid) { Liste fileDetails = new List(); pour (int i = 0; i < Request.Files.Count; i ++) { var fichier = 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); 
} 

et l'élément de forme:

Toute aide sera très appréciée.

Répondre

0

Trié!

[HttpPost] [ValidateAntiForgeryToken] public ActionResult Créer (facture de facture) { if (ModelState.IsValid) { Liste fileDetails = new List();

  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); 
    }