我正在使用ASP.NET开发一个照片库。 我将用户的图像存储在SQL数据库中。我不确定如何显示图像。
假设每个用户有1张图片,我正在做类似的事情:
在我发现如果很少有用户同时加载该页面之前,这一点工作正常,可能无法正常工作。
然后我将“file.jpg”改成一些随机字符串会对我有所帮助:
但是删除此文件是不可能的,因为它仍然被服务器使用。
解决问题的正确方法是什么?我照片库中的用户最终会同时看到12张照片。
答案 0 :(得分:0)
您不应该实际存储该文件。你应该流式传输它。例如,创建一个处理程序,该处理程序从具有特定ID的用户返回图像,并使用该image.ashx?id=1
之类的ID调用它。处理程序看起来像
Image image; // image from your database
using(MemoryStream ms = new MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.WriteTo(context.Response.OutputStream);
}
Response.ContentType = "image/png";
此处理程序可以像静态图像文件一样使用。因此,您甚至可以将其用于background-image
:
<div style="background-image: url(image.ashx?id=1)">Username</div>
答案 1 :(得分:0)
我通常使用通用处理程序(ashx
文件)从DB提供图像。
您需要做的是创建一个ashx
文件并使用以下内容:
context.Response.BinaryWrite(myImage);
您创建的图像标记如下:
<img alt="whatever" src="/images.ashx?iid=1243 />
其中iid
是数据库中图像的唯一ID。