我有一个方法,我通过AJAX从我的MVC3应用程序调用。该方法使用WebImage帮助程序创建图像。创建映像后,然后从控制器返回Json结果。实际返回的内容看起来像图像数据。我在请求的标头中发送的内容类型是json,所以我不确定为什么服务器返回图像数据而不是我的实际json结果。如果我删除WebImage代码,我会得到我正在寻找的实际json结果。
方法示例:
[HttpPost]
public ActionResult CreateTempImage(AvatarUploadModel avatar){
try{
var imageId = Guid.NewGuid();
var newFileName = imageId + "_" + Path.GetFileName(avatar.FileName);
var imageTempPath = Server.MapPath("~/Areas/Admin/TemporaryUploads/" + newFileName);
var image = new WebImage(avatar.FileName).Resize(400, 400, true).Write();
image.Save(imageTempPath);
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
catch(Exception ex){
return Json(new { success = false}, JsonRequestBehavior.AllowGet);
}
}
答案 0 :(得分:1)
此代码是您的问题
var image = new WebImage(avatar.FileName).Resize(400, 400, true).Write();
记录为......
/// <summary>
/// Renders an image to the browser.
/// </summary>
///
/// <returns>
/// The image.
/// </returns>
/// <param name="requestedFormat">(Optional) The file format to use when the image is written. </param>
反编译它会给出以下代码:
requestedFormat = requestedFormat ?? this._initialFormat.ToString();
byte[] bytes = this.GetBytes(requestedFormat);
string str = !requestedFormat.StartsWith("image/", StringComparison.OrdinalIgnoreCase) ? "image/" + requestedFormat : requestedFormat;
HttpResponse response = HttpContext.Current.Response;
response.ContentType = str;
response.BinaryWrite(bytes);
return this;
即。它将图像直接写入HttpContext.Current.Response
并将ContentType
设置为图像的格式。
如果您只想将图像保存到服务器上的文件系统,则可以移除对Write
的呼叫,并将其替换为Save
的呼叫:
var image = new WebImage(avatar.FileName).Resize(400, 400, true).Save(imageTempPath);
干杯, 迪安