1

我如何通过提供像这样的 url 来向客户提供图像

http://mydomain.com/image/123?width=100&height=100

在上面的网址中,我不想提供像

http://mydomain.com/image/manoj.jpg

在 C# .net 中怎么可能

4

1 回答 1

0

我最近通过从 Northwind DB 创建一个网站来学习 ASP.NET MVC。存储在 Northwind DB 中的一些数据是类别的图像。理想情况下,我会将它们提取到文件中并引用这些文件,但我想看看是否可以将它们从数据库中获取到浏览器中。所以我有这段代码。

要获取您要查找的 URL,您需要使用 map a new route,我需要在默认路由之前使用它以避免冲突。

        routes.MapRoute(
            name: "Images",
            url: "Image/{id}",
            defaults: new { controller = "Image", action = "GetImageById", id = -1 }
        );

然后在我的 ImageController 类中,我从 Northwind DB 中检索了图像(作为字节 [])并将其保存为 JPEG 格式的输出流

    public void GetImageById(int id)
    {
        if (id == -1)
            return;

        byte[] imageArray = db.Categories.Find(id).Picture;

        using (MemoryStream stream = new MemoryStream())
        {
            // Northwind Category images were designed for MS Access, which expects a 78 byte OLE header
            int offset = 78;
            stream.Write(imageArray, offset, imageArray.Length - offset);

            Image image = Image.FromStream(stream);
            image.Save(HttpContext.Response.OutputStream, ImageFormat.Jpeg);
        }
    }

注:图片来自System.Drawing

对于 ASP.NET,您需要使用 URL 路由(请参阅http://msdn.microsoft.com/en-us/library/cc668201.aspx)。您可以使用它映射到 .ashx 处理程序并使用上面的代码返回图像。(与 Satpal 和 Vinay 的答案几乎相同,但带有代码示例)

于 2014-02-26T16:42:20.033 回答