2015-05-26 3 views
0

Я не могу загрузить файл в папку. Я не могу найти ошибку. После загрузки файла возвращается вид UploadFile.Загрузка файла в ASP.NET MVC 5

Модель Класс:

public class Upload 
    { 
     public int UploadId { get; set; } 
     public string UploadTitle { get; set; } 
     public string UploadURL { get; set; } 

    } 

Вот контроллер (FileUpload) Действие:

public ActionResult UploadFile(HttpPostedFileBase file, Upload upload) 
     { 
      if (ModelState.IsValid) 
      { 
       if (file != null) 
       { 
        string fil = System.IO.Path.GetFileName(file.FileName); 
        string path = System.IO.Path.Combine(Server.MapPath("/Content/Uploads/Files"), fil); 
        file.SaveAs(path); 
        upload.UploadURL = "/Content/Uploads/Files/" + file.FileName; 
       } 
       db.Uploads.Add(upload); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      return View(upload); 
     } 

На мой взгляд:

@using (Html.BeginForm("UploadFile, "FileUpload", FormMethod.Post, new { enctype = "multipart/Form-data" })) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 

     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

     <div class="form-group"> 
      <div class="control-label col-md-2"> 
       <label for="file">Upload Image for Slide:</label> 
      </div> 
      <div class="col-md-10"> 
       <input type="file" name="file" id="file" style="width:50%" /> 
      </div> 

     </div> 



     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Save" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 
+0

У вас есть ошибка? Вы пытались отладить код? Возвращает ли вызов Model.IsValid' true? Невозможно угадать без какой-либо информации. –

+0

У вас есть атрибут «[HttpPost]» перед функцией в контроллере? – Eru

+0

@Eru "[HttpPost]" атрибут для кода. – userKG

ответ

4

Привет Я попробовал ваш же код его работ для меня.

Контроллер

[HttpPost] 
     public ActionResult UploadFile(HttpPostedFileBase file) 
     { 
      if (ModelState.IsValid) 
      { 
       if (file != null) 
       { 
        string fil = System.IO.Path.GetFileName(file.FileName); 
        string path = System.IO.Path.Combine(Server.MapPath("/Content/Uploads/Files"), fil); 
        file.SaveAs(path); 
       } 
       return RedirectToAction("Index"); 
      } 

      return View("UploadFile"); 
     } 

Посмотреть

@using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { enctype = "multipart/Form-data" })) 
{ 
@Html.AntiForgeryToken() 

<div class="form-horizontal"> 

    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

    <div class="form-group"> 
     <div class="control-label col-md-2"> 
      <label for="file">Upload Image for Slide:</label> 
     </div> 
     <div class="col-md-10"> 
      <input type="file" name="file" id="file" style="width:50%" /> 
     </div> 

    </div> 



    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Save" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 
} 

Я обнаружил небольшую ошибку в вас код в Html.BeginForm в названии действия " (двойные кавычки отсутствует)

-1

Я забыл указать требуемое поле в UploadURL в выше класс модели:

public class Upload 
    { 
     public int UploadId { get; set; } 
     public string UploadTitle { get; set; } 

     [Required] 
     public string UploadURL { get; set; } 

    } 

Обязательная проверка поля на поле UploadURL ограничивает загрузку файла здесь. Я удалил обязательную проверку поля из поля.

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