6
votes

ASP.NET MVC 3: Prise en charge du téléchargement de fichier multiple HTML5?

puis-je utiliser: xxx

et lié-le à: xxx

J'écris une application Web pour les navigateurs modernes et Don Il faut s'inquiéter d'IE, c'est-à-dire que je voudrais éviter d'utiliser Flash. En ce moment, fichiers est toujours null quand je pose le formulaire. Y a-t-il un moyen de faire fonctionner cela dans MVC 3?

Merci!


3 commentaires

Dupliqué possible de Téléchargement multi-fichier avec HTML 5


Vous aurez probablement besoin de créer un classeur de modèle personnalisé.


Ou faire la signature Upload ActionResult public (httppostedfileBase [])


4 Réponses :


13
votes

Avez-vous votre codage correctement dans votre formulaire?

Je pense que vous avez toujours besoin de: p> xxx pré>

dans la déclaration de formulaire pour vous assurer que le navigateur peut poster des fichiers. P>

Par exemple: P>

@using (Html.BeginForm("action", "controller", FormMethod.Post, new { enctype = "multipart/form-data" }))


1 commentaires

Ok, parlait trop tôt. Je suis retourné à la double vérification et j'avais un type-o là qui empêchait le fichier de poster!



1
votes

n'utiliserait pas la requête.Files pour la compatibilité en arrière de la manière suivante:

public ActionResult UploadFiles()
{
  string UpoadedFilesFolder = "YourServerFolder";
  string fileName ="";
  byte[] fileData=null;
  foreach (HttpPostedFileBase uf in Request.Files)
  {
    HttpPostedFileBase UpoadedFile = uf;
    if (uf.ContentLength > 0)
    {
      fileName = Path.GetFileName(UpoadedFile.FileName);
      using (BinaryReader br = new BinaryReader(UpoadedFile.InputStream))
      {
        fileData = br.ReadBytes((int)UpoadedFile.InputStream.Length);
      }
      using (FileStream fs = new FileStream(Path.Combine(System.Web.Hosting.HostingEnvironment.MapPath(UpoadedFilesFolder), fi.FileName), FileMode.Create))
      {
        fs.Write(fileData, 0, fileData.Length);
      }
    }
  }
  return Content("OK");
}


0 commentaires

0
votes

Mon indice: xxx pré>

dans le contrôleur p>

public ActionResult Upload(HttpPostedFileBase[] files)
        {
            TempData["Message"] = files.Count();
            return RedirectToAction("Index");
        }   


0 commentaires

0
votes

Cela ne fonctionnera pas:

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


0 commentaires