2013-06-03 21 views
1

對於professioanl C#程序員來說,答案可能太簡單了,但對於我來說,這對我來說有點棘手,因爲我是C#和ASP.NET MVC的新手。在類庫中放置FileUpload方法

我剛剛瞭解了戰略設計模式。我的程序需要能夠上傳圖像。我將以兩種方式完成此項工作,(1)能夠上傳到文件系統,以及(2)上傳到數據庫。爲此,我將爲這兩種算法使用策略設計模式。

問題是我在一個單獨的類庫中實現策略,除了解決方案中的MVC應用程序項目。

而這個代碼,在控制器中工作正常,不在類庫中工作。

這是在控制器

[HttpPost] 
    public void UploadFile() { 
     string physicalPath = HttpContext.Server.MapPath("../") + "UploadImages" + "\\"; 

     for (int i = 0; i < Request.Files.Count; i++) { 

      Request.Files[0].SaveAs(physicalPath + System.IO.Path.GetFileName(Request.Files[i].FileName)); 
     } 
    } 

而且這是在類庫。

public class UploadToFile : IUpload { 
    public void Upload() { 
     string physicalPath = HttpContext.Server.MapPath("../") + "UploadImages" + "\\"; 
     for (int i = 0; i < Request.Files.Count; i++) { 
      Request.Files[0].SaveAs(physicalPath + System.IO.Path.GetFileName(Request.Files[i].FileName)); 
     } 
    } 
} 

可能是一個類庫不能訪問HttpContextRequest

using System.Web.Mvc;using System.Web;被正確引用。

我知道答案應該很簡單,我無法找到這個主題的好的升級,而谷歌30分鐘。

謝謝。

回答

3

在你的類庫,你需要使用HttpContext.Current

所以..訪問的MapPath ...用途:

HttpContext.Current.Server.MapPath 

訪問請求...用途:

HttpContext.Current.Request 

請注意,您可以在代碼中的任何位置使用HttpContext.Current,但您應該驗證它不是NULL(以防萬一它不在web c中ontext)。

FYI:在Web/MVC應用程序的Page.Context屬性指向同一個地方HttpContext.Current

希望它能幫助。

+1

是的。幫助和工作。謝謝。 – Zafar