Wil*_*ins 5 .net c# database image
相关: 在DB中存储图像 - 是还是不?
在阅读上述问题后,似乎使用数据库进行图像存储的首选方法是仅在数据库中存储文件路径.但是,大多数答案似乎都集中在Web服务器上.
就我而言,我正在开发一个桌面应用程序,它将在Intranet中的多台计算机上使用.专用服务器将托管数据库,其中包含与在各种设备上执行测试相关的信息.
图像需要以某种方式存储在服务器上.在这种情况下,将图像存储在数据库中是否是正确的方法,甚至是唯一的方法?
优点:
缺点
编辑:如标签中所述,应用程序是用C#/ .NET编写的.如果在这种情况下将图像写入文件系统是一个选项,我可以使用一些帮助来理解这是如何完成的.
编辑2:正如下面的评论中详细阐述的那样,现在我假设一个MySQL数据库,尽管SQL Server 2008的FileStream功能可能会改变它.
同样在我的情况下,图像将经常添加,并且在此之后可以被认为是只读的,因为它们永远不应该被更改,并且将在需要时被读出.图像可能很小(每个约70k),我也在考虑服务器上的其他二进制格式存储,每个文件大约20k,我可能会使用相同的存储和检索方法.
我建议将这些文件保存在文件系统的磁盘上,而不是数据库中.文件的文件系统,关系数据的数据库等.
通过Web服务交付
考虑通过在该数据库计算机上托管Web服务/应用程序,将这些图像传送到桌面应用程序.该应用程序的工作是仅提供图像.使用ASP.NET应用程序在该计算机上设置Web服务器.有.ashx句柄请求并流式传输二进制图像.像这样的东西:
http://myserver/myapp/GetImage.ashx?CustomerID=123&ImageID=456
安全
如果内部网安全性存在问题,则可以确保用户经过身份验证并获得对映像的读访问权限.审计跟踪也可以在这里实施.
文件系统安全
关于这些映像的安全性,请考虑NTFS为您提供了许多措施,以确保只有经过授权的人才能根据需要读取/删除/放置文件.然后,任务是定义这些角色并实现Windows安全组.
未来需求
此方法允许您从Intranet上的任何位置安全地使用这些映像.也许这个应用程序会在某个时候迁移到Web应用程序?也许功能请求来自客户,其中Web解决方案是合适的?
这可能听起来有点过分而不是从数据库中读取blob,但从安全角度来看它很棒.考虑您的客户和患者对隐私和安全的期望.
<%@ WebHandler Language="C#" Class="Handler" %>
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) 
{
    //go to the DB and get the path for this ID.
    string filePath = GetImagePath(context.Request.QueryString["ImageID"]);
    //now you have the path on disk; read the file
    byte[] imgBytes=GetBytesFromDisk(filePath);
    // send back as byte[]
    context.Response.BinaryWrite(imgBytes);
}
我认为答案是没有正确答案。与编程(和生活)中的大多数事情一样,这取决于。
以下是存储在数据库中的一些优点和缺点:
优点
缺点
我想当谈到你的情况时,我会倾向于在 DB 中存储的简单性。
| 归档时间: | 
 | 
| 查看次数: | 1465 次 | 
| 最近记录: |