38

我想使用 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();
}

foreach 中的“HttpContext.Current.Request.Files.Keys”没有解析?我的使用正确,Visual Studio 没有提供“解决”选项。

4

3 回答 3

110

尝试在它前面加上System.Web.

如果我尝试System.Web.HttpContext.Current,则当前存在,但如果我尝试HttpContext.Current,则它无法识别“当前”。我的 using 语句中确实有System.Web,但我似乎仍然需要指定它才能访问“当前”。

@Chris 的回答指出并解释了根本原因。

于 2013-05-02T12:52:15.590 回答
65

问题是Controller该类有一个名为的公共属性HttpContext(请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext.aspx)。

这意味着当您尝试在控制器中没有任何限定的情况下使用它时,它会解析为本地属性而不是System.Web.HttpContext. 该属性的类型HttpContextBase确实具有Request可以执行您想要的操作的属性(尽管请注意,它与您从System.Web.HttpContext.

于 2014-02-03T14:16:26.460 回答
4

非常简单的添加库

using System.Web;

并更换

context.Response -> HttpContext.Current.Response

方法

context -> HttpContext.Current

你的问题就解决了。

于 2014-09-29T08:44:43.683 回答