2010-12-06 7 views
1

J'essaie de faire un téléchargement de fichier sur le serveur de mon projet mvc. J'ai écrit ma classe,Problème C# MVC avec téléchargement de fichier

public class MyModule: IHttpModule 

which defines the event 

void app_BeginRequest (object sender, EventArgs e) 

In it, I check the length of the file that the user has selected to send. 

if (context.Request.ContentLength> 4096000) 
{ 
    //What should I write here, that file is not loaded? I tried 
    context.Response.Redirect ("address here"); 
    //but the file is still loaded and then going on Redirect. 
} 
+0

Qu'est-ce que vous essayez faire - vérifier que le fichier ne dépasse pas une taille maximale? En outre, je ne crois pas que vous ayez besoin de créer une implémentation de IHttpModule pour gérer le téléchargement de fichiers - vous pouvez simplement utiliser une action [HttpPost] dans votre contrôleur qui prend un paramètre HttpPostedFileBase. – Pandincus

Répondre

5

Dans ASP.NET MVC, vous n'écrivez généralement pas de modules http pour gérer les téléchargements de fichiers. Vous écrivez des contrôleurs et à l'intérieur de ces contrôleurs vous écrivez des actions. Phil Haack blogged à propos du transfert de fichiers de ASP.NET MVC:

Vous avez une vue contenant une forme:

<% using (Html.BeginForm("upload", "home", FormMethod.Post, 
    new { enctype = "multipart/form-data" })) { %> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file" /> 

    <input type="submit" /> 
<% } %> 

Et une action de contrôleur pour gérer le téléchargement:

[HttpPost] 
public ActionResult Upload(HttpPostedFileBase file) 
{ 
    if (file != null && file.ContentLength > 0) 
    { 
     if (file.ContentLength > 4096000) 
     { 
      return RedirectToAction("FileTooBig"); 
     } 
     var fileName = Path.GetFileName(file.FileName); 
     var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
     file.SaveAs(path); 
    } 
    return RedirectToAction("Index"); 
} 
+0

Lors du téléchargement d'un événement déclenché, le fichier sera déjà téléchargé sur le serveur. Si le fichier est plus grand qu'une certaine valeur, je ne veux pas le charger. – Stillus

+0

@darin J'ai utilisé ce code pour enregistrer le fichier dans le répertoire Mais je reçois HttpPostedFileBase null dans le contrôleur – user1006544

+0

@ user1006544, vous devez avoir oublié quelque chose et votre code ne ressemble probablement pas exactement à celui montré ici. –

Questions connexes