ASP.NET MVC 4上载文件的状态

时间:2015-01-03 11:00:12

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

我正在使用Ninject进行依赖注入,我正在尝试将上传的文件绑定到图形处理程序,该图形处理程序将调整图像和其他内容的大小。

我还有一个模型,其中包含上传文件的HttpPostedFileBase字段。问题是,如何在上传文件到达控制器之前使用它?

我尝试使用global.asax中的Application_BeginRequest()方法,就像这样......

HttpContext.Current.Request.Files["UploadedFile"]

但此代码在Application_BeginRequest()中返回null,但在模型中的控制器内,上传的文件就在那里。

我现在在IIS中有mod禁止访问global.asax中的HttpContext但是有一个变通方法还是我可以使用的另一个global.asax方法?

`

1 个答案:

答案 0 :(得分:0)

您可以创建自定义ActionFilter以在指定的操作方法之前访问已发布的文件:

public class ImageModifierAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var files = filterContext.HttpContext.Request.Files;
        foreach (string file in files)
        {
            var postedFile = files[file];
            if (postedFile == null || postedFile.ContentLength == 0) continue;
            // modify the postedFile Here
        } 
        base.OnActionExecuting(filterContext);
    }
}

然后使用它:

[ImageModifier]
public ActionResult ImageUpload(HttpPostedFileBase file)
{ /*.....*/ }