2010-08-19 3 views
1

Comment identifier l'entrée (type = "file") id de fileupload lors du téléchargement du fichier sur le serveur.Téléchargeur de fichiers dans asp.net mvc

Laissez-moi vous expliquer en détail:

J'ai le contrôle de téléchargement de fichiers multiples sur ma page et de contrôle différent fichier de sauvegarde sur différents dossiers tels que « Fileupload1 » va enregistrer le fichier sur « Dossier1 » et ainsi de suite.

Répondre

4

Vous ne pouvez pas. Le id d'un élément HTML est jamais envoyé au serveur lors de la publication d'un formulaire. En ce qui concerne l'attribut name, vous pouvez parcourir la collection Request.Files. Dans ASP.NET MVC, il est plus courant d'utiliser des paramètres d'action. Exemple:

<form action="" method="post" enctype="multipart/form-data"> 
    <input type="file" name="files" id="file1" /> 
    <input type="file" name="files" id="file2" /> 
    <input type="file" name="files" id="file3" /> 
    <input type="submit" value="Upload files" /> 
</form> 

et votre action contrôleur:

[HttpPost] 
public ActionResult Index(IEnumerable<HttpPostedFileBase> files) 
{ 
    foreach (var file in files) 
    { 
     if (file.ContentLength > 0) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
      var path = Path.Combine(Server.MapPath("~/App_Data"), fileName); 
      file.SaveAs(path); 
     } 
    } 
    return RedirectToAction("Index"); 
} 

Il est aussi simple que cela.

+0

J'ai plusieurs fichiers de télécharger pour télécharger le fichier sur le serveur puis comment puis-je identifier le fichier à l'entrée connexe. suggérer si vous avez une idée. – Xulfee

+0

comment puis-je obtenir le nom de l'entrée? – Xulfee

+0

Mais il ne retourne pas et le nom de l'entrée – Xulfee

0

Comme le souligne Darian, l'ID n'est pas envoyé. Mais l'attribut name est, de sorte que votre téléchargement de fichier doit être quelque chose comme:

<input type="file" name="contactsFile" /> 

Ce qui vous permettra d'utiliser une méthode telle que

public ActionResult UploadFile(HttpPostedFileBase contactsFile) 

dans votre contrôleur.

+0

Pouvez-vous me fournir un exemple de code qui expliquent en détail. – Xulfee

0

Vous n'aurez accès à aucun élément DOM, car ASP.NET MVC utilise FileCollectionModelBinder pour créer une collection de fichiers. Donc, ce que vous recevez dans votre contrôleur n'aura rien à voir avec le DOM. Mais la bonne chose est que c'est une collection, vous pouvez accéder à l'index du fichier.

<input type="file" name="files[0]" id="file1" /> 
    <input type="file" name="files[1]" id="file2" /> 
    <input type="file" name="files[2]" id="file3" /> 

Ensuite, si vous avez besoin de télécharger des fichiers [0] dans le dossier Y et fichiers [1] pour le dossier Z vous pouvez accéder à l'index de la collection de fichiers.

switch (index) 
{ 
    case 0: 
    // Upload to Y 
    case 1: 
    // Upload to Z 
    default: 
} 
+0

pouvez-vous me fournir un exemple de code qui explique en détail – Xulfee

Questions connexes