我如何通过提供像这样的 url 来向客户提供图像
http://mydomain.com/image/123?width=100&height=100
在上面的网址中,我不想提供像
http://mydomain.com/image/manoj.jpg
在 C# .net 中怎么可能
我如何通过提供像这样的 url 来向客户提供图像
http://mydomain.com/image/123?width=100&height=100
在上面的网址中,我不想提供像
http://mydomain.com/image/manoj.jpg
在 C# .net 中怎么可能
我最近通过从 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 的答案几乎相同,但带有代码示例)