2014-11-24 37 views
0

我正在開發一個MVC 5應用程序並使用MS SQL Server作爲數據庫。我有這個應用程序的形式,它將存儲事件的詳細信息在數據庫中。在這種形式中,我有一個文件上傳字段。其實我想上載一個圖像在服務器上的文件夾中,並將其URL存儲在數據庫中,以便URL可以在我的前端使用。在MVC中的文件上傳5

以下是我創建的操作方法

public ActionResult Create([Bind(Include = "Id,Event_Name,Event_Description,Event_Detail,Image_Url,Event_Date,User_Name,Date_Uploaded,Category_ID")] WASA_Events wASA_Events) 
     { 
      var filePath = FileUpload();//Function call to get the uploaded file path 
      wASA_Events.Image_Url = filePath; 
      if (ModelState.IsValid) 
      { 
       db.WASA_Events.Add(wASA_Events); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      ViewBag.Category_ID = new SelectList(db.WASA_Events_Category, "id", "Event_Category", wASA_Events.Category_ID); 
      return View(wASA_Events); 
     } 

和文件上傳功能,這將返回文件路徑爲下

public string FileUpload() 
     { 
      var filePath = ""; 
      if(Request.Files.Count > 0) 
      { 
       var file = Request.Files[0]; 
       if(file!=null && file.ContentLength > 0) 
       { 
        var fileName = Path.GetFileName(file.FileName); 
        var path = Path.Combine(Server.MapPath("~/images/uplods/"), fileName); 
        file.SaveAs(path); 
        filePath = path; 
       } 
      } 
      return (filePath); 
     } 

在我看來,我用下面的

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

現在問題是我在Request.Files.Count中什麼都沒有,意思是它的值爲零。所以不能前進。

任何幫助。

+0

是Request.Files.Count 0操作的代碼? – 2014-11-24 17:31:55

+0

是的,我已檢查,它是0 – 2014-11-25 00:40:47

回答

0

檢查之下。,。,

  1. 檢查你是否能在創建操作本身請求的文件。我確信請求也會在FileUpload方法中保持狀態。但檢查它是否不是。

  2. 文件上傳輸入是否在視圖中使用的表單內?

  3. 文件上傳輸入是否爲任何第三方控件?如果是,請在瀏覽器中選擇文件後,檢查是否在HTML中的文件上傳輸入中更新了文件名。

有點瘋狂檢查將是您是否選擇了一個文件,並選擇上傳文件瀏覽器,。,

+0

感謝您的建議 – 2014-11-26 06:26:32

-1

我只是做文件上傳通過添加下面的類

public class Pictures 
    { 
     public HttpPostedFileBase File { get; set; } 
    } 

然後在我創建Controller操作方法中使用它。下面是控制器動作

if (picture.File.ContentLength > 0) 
      { 
       var fileName = Path.GetFileName(picture.File.FileName); 
       var path = Path.Combine(Server.MapPath("~/assets/uploads/events/"), fileName); 
       picture.File.SaveAs(path); 
      } 

,並鑑於

<input type="file" id="File" name="File" class="form-control"/> 

這個solvedmy問題