将FileUpload方法放在类库中

时间:2013-06-03 16:25:36

标签: c# asp.net-mvc asp.net-mvc-4

对于专业的C#程序员来说,答案可能太容易了,但这对我来说有点棘手,因为我是C#和ASP.NET MVC的新手。

我刚刚了解了战略设计模式。我的程序需要能够上传图像。我将以两种方式完成此任务:(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;被正确引用。

我知道答案应该很简单,在google 30分钟的时候,我无法找到这个主题的良好升级。

感谢。

1 个答案:

答案 0 :(得分:4)

在您的班级图书馆中,您需要使用HttpContext.Current

所以..访问MapPath ...使用:

HttpContext.Current.Server.MapPath

访问请求...使用:

HttpContext.Current.Request

请注意,您可以在代码中的任何位置使用 HttpContext.Current ,但是您应该验证它不是NULL(以防它不在Web上下文中)。

仅供参考:在Web / MVC应用程序中, Page.Context 属性指向与 HttpContext.Current

相同的位置

希望它有所帮助。