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には「解決」オプションがありません。
問題は、Controller
クラスにHttpContext
と呼ばれるパブリックプロパティがあることです( http://msdn.Microsoft.com/en-us/library/system.web.mvcを参照してください.controller.httpcontext.aspx )。
これは、コントローラーで修飾なしで使用しようとすると、System.Web.HttpContext
ではなくローカルプロパティに解決されることを意味します。プロパティのタイプはHttpContextBase
で、これはあなたが望むことをするRequest
プロパティを持っています(ただし、System.Web.HttpContext
から取得するのと同じクラスではないことに注意してください) 。
System.Web.
をプレフィックスとして試してください
System.Web.HttpContext.Current
を試すと、Currentがそこにありますが、HttpContext.Current
を試すと、 'Current'を認識しません。 usingステートメントにSystem.Web
がありますが、 'Current'へのアクセスを取得するためにそれを指定する必要があるようです。
非常にシンプルなライブラリの追加
using System.Web;
そして交換
context.Response -> HttpContext.Current.Response
手段
context -> HttpContext.Current
そしてあなたの問題は解決されました。