2010-12-06 5 views
1

Я пытаюсь сделать загрузку файла на сервер в моем проекте mvc. Я написал свой класс,Проблема с C# MVC с загрузкой файла

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

Что вы пытаетесь сделать - проверить, что файл не превышает максимальный размер? Кроме того, я не считаю, что вам нужно создать реализацию IHttpModule для обработки загрузки файлов - вы можете просто использовать действие [HttpPost] в вашем контроллере, которое принимает параметр HttpPostedFileBase. – Pandincus 2010-12-06 14:26:55

ответ

5

В ASP.NET MVC вы обычно не пишете http-модули для обработки файлов. Вы пишете контроллеры и внутри тех контроллеров, которые вы пишете. Фил Хаак blogged о загрузке файлов Ni ASP.NET MVC:

У вас есть представление, содержащее форму:

<% 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" /> 
<% } %> 

И действие контроллера для обработки загрузки:

[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

При запуске события Upload файл уже будет загружен на сервер. Если файл больше определенного значения, я не хочу его загружать. – Stillus 2010-12-06 14:33:06

Смежные вопросы