0

使用 MVC3 在 Web 服务器上处理图像的最佳方法是什么?有没有这方面的最佳实践?通过处理图像,我的意思是使用户能够将照片上传到 Web 服务器上,将它们保存在磁盘上,并在需要时检索它们以显示在页面上。

4

1 回答 1

1

使用存储在数据库中的路径将图像保存到磁盘通常是最好和最快的方法。上传可以通过任何常规方式处理,但有一些很好的开源库可以帮助您(plupload是我使用过的最完整的功能)。

您可以创建自己的ActionResult实现并返回和要显示的图像。您的控制器操作可以采用识别图像所需的任何参数,然后您可以从磁盘中检索它并ImageResult从您的操作中返回一个。

这是一个基本的实现(信用):

public class ImageResult : ActionResult 
{ 
    public ImageResult() { }
    public Image Image { get; set; } 
    public ImageFormat ImageFormat { get; set; }
    public override void ExecuteResult(ControllerContext context) 
    { 
        // verify properties 
        if (Image == null) 
        { 
            throw new ArgumentNullException("Image"); 
        } 
        if (ImageFormat == null) 
        { 
            throw new ArgumentNullException("ImageFormat"); 
        }
        // output 
        context.HttpContext.Response.Clear();
        if (ImageFormat.Equals(ImageFormat.Bmp)) context.HttpContext.Response.ContentType = "image/bmp"; 
        if (ImageFormat.Equals(ImageFormat.Gif)) context.HttpContext.Response.ContentType = "image/gif"; 
        if (ImageFormat.Equals(ImageFormat.Icon)) context.HttpContext.Response.ContentType = "image/vnd.microsoft.icon"; 
        if (ImageFormat.Equals(ImageFormat.Jpeg)) context.HttpContext.Response.ContentType = "image/jpeg"; 
        if (ImageFormat.Equals(ImageFormat.Png)) context.HttpContext.Response.ContentType = "image/png"; 
        if (ImageFormat.Equals(ImageFormat.Tiff)) context.HttpContext.Response.ContentType = "image/tiff"; 
        if (ImageFormat.Equals(ImageFormat.Wmf)) context.HttpContext.Response.ContentType = "image/wmf";
        Image.Save(context.HttpContext.Response.OutputStream, ImageFormat); 
    } 
}
于 2012-07-23T14:08:42.947 回答