我想使用ImageResizer(来自ImageResizing dot net)。我通过NuGet为MVC安装了ImageResizer。但是,当我使用示例中的以下代码时:
//Loop through each uploaded file
foreach (string fileKey in HttpContext.Current.Request.Files.Keys)
{
HttpPostedFile file = HttpContext.Current.Request.Files[fileKey];
if (file.ContentLength <= 0) continue; //Skip unused file controls.
//The resizing settings can specify any of 30 commands.. See http://imageresizing.net for details.
//Destination paths can have variables like <guid> and <ext>, or
//even a santizied version of the original filename, like <filename:A-Za-z0-9>
ImageResizer.ImageJob i = new ImageResizer.ImageJob(file, "~/uploads/<guid>.<ext>", new ImageResizer.ResizeSettings(
"width=2000;height=2000;format=jpg;mode=max"));
i.CreateParentDirectory = true; //Auto-create the uploads directory.
i.Build();
}
&#34; HttpContext.Current.Request.Files.Keys&#34;在foreach没有解决?我的使用正确,Visual Studio不提供&#34; Resolve&#34;选项。
答案 0 :(得分:98)
尝试使用System.Web.
如果我尝试System.Web.HttpContext.Current
,那么Current就在那里,但如果我尝试HttpContext.Current
,那么它就无法识别'当前'。我的using语句中有System.Web
,但我仍然需要指定它才能访问'Current'。
答案 1 :(得分:56)
问题是Controller
类有一个名为HttpContext
的公共属性(请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext.aspx)。
这意味着当您尝试在控制器中没有任何限定条件的情况下使用它时,它会解析为本地属性而不是System.Web.HttpContext
。该属性的类型为HttpContextBase
,它具有Request
属性,可以执行您想要的操作(但请注意,它与您从System.Web.HttpContext
获得的类不同。< / p>
答案 2 :(得分:2)
非常简单的添加库
using System.Web;
并替换
context.Response -> HttpContext.Current.Response
表示
context -> HttpContext.Current
,你的问题就解决了。