我正在制作一个网站,我需要裁剪并调整人们上传的图片大小。 我得到了上传功能的代码,但在我的httpPost动作结果中,我想调整图像的大小以便开始。我也得到了代码,但我找不到显示图像的方法。
这是我的代码:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FileUpload(HttpPostedFileBase uploadFile)
{
if (uploadFile.ContentLength > 0)
{
foreach (string fileKey in System.Web.HttpContext.Current.Request.Files.Keys)
{
HttpPostedFile file = System.Web.HttpContext.Current.Request.Files[fileKey];
if (file.ContentLength <= 0) continue; //Skip unused file controls.
ImageResizer.ImageJob i = new ImageResizer.ImageJob(file, "~/img/", new ImageResizer.ResizeSettings("width=50;height=50;format=jpg;mode=max"));
i.CreateParentDirectory = true; //Auto-create the uploads directory.
i.Build();
string relativePath = "~/img/" + Path.GetFileName(uploadFile.FileName);
string physicalPath = Server.MapPath(relativePath);
uploadFile.SaveAs(physicalPath);
return View((object)relativePath);
}
}
我想从ImageResizer.ImageJob写出图片信息。 有任何想法吗? 谢谢!
答案 0 :(得分:2)
首先,您使用的代码允许任何人上传可执行页面并运行。
从不,在任何情况下,如果您使用uploadFile.FileName
作为最终路径名的一部分,除非您深入了解路径和长度清理。
其次,ImageJob需要目标路径,而不是文件夹路径。您可以使用"~/img/<guid>.<ext>"
之类的变量,并从i.FinalPath
访问生成的物理路径。您可以使用ImageResizer.Util.PathUtils.GuessVirtualPath(i.FinalPath)
来获取应用相对路径。
由于这几乎是mvc3 ImageResizer的精确副本,请在发布前考虑使用搜索功能。