我正在使用Ninject进行依赖注入,我正在尝试将上传的文件绑定到图形处理程序,该图形处理程序将调整图像和其他内容的大小。
我还有一个模型,其中包含上传文件的HttpPostedFileBase
字段。问题是,如何在上传文件到达控制器之前使用它?
我尝试使用global.asax中的Application_BeginRequest()
方法,就像这样......
HttpContext.Current.Request.Files["UploadedFile"]
但此代码在Application_BeginRequest()
中返回null,但在模型中的控制器内,上传的文件就在那里。
我现在在IIS中有mod禁止访问global.asax中的HttpContext但是有一个变通方法还是我可以使用的另一个global.asax方法?
`
答案 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)
{ /*.....*/ }