如何在SQL Server 2005中有效地存储和管理图像

时间:2009-06-03 12:47:18

标签: sql-server database sql-server-2005

我想将产品的图像插入数据库,然后根据要求获取这些图像。请建议。

8 个答案:

答案 0 :(得分:4)

我不同意亚伦。将图像存储在文件系统中始终会使您遇到孤立文件和/或数据库条目的潜在问题。很难保持“参照完整性”。在某些情况下,您可能不想使用blob路径,因为图像特别大,等等,但在大多数标准应用场景中,我会将图像存储在数据库中。

答案 1 :(得分:2)

将图像存储在SQL Server 2005数据库中的最佳方法是存储图像实际存在的路径。

有关详细信息,请参阅此处。

https://stackoverflow.com/questions/805519/save-image-in-database

答案 2 :(得分:2)

这是一个非常常见的SQL Server讨论。一般的经验法则是,如果要存储的文件大于1MB,则将它们存储在文件系统中。

有关所涉及问题的完整讨论,请参阅以下Microsoft Research文档。

http://research.microsoft.com/apps/pubs/default.aspx?id=64525

另一方面,SQL Server 2008使用Filestream技术来满足这种情况。

SQL Server Filestream

答案 3 :(得分:0)

插入很容易进入BLOB类型的字段。

恢复图像将取决于您将使用的语言。你使用PHP吗?

答案 4 :(得分:0)

SQL Server 2005确实有图像数据类型。使用它。

关于它的好坏,取决于你的要求。

答案 5 :(得分:0)

最好的方法是在SQL Server 2008上升级并使用FileStream(存储在文件系统中的内容)

答案 6 :(得分:0)

跳过整个“在db bad中的图像”辩论,你需要在这里解决一些问题。

1)数据存储:你需要有一个地方放置图像。在SQL 2005中,最好使用VARBINARY(MAX)列。

2)上传:您需要将图像上传到数据库中。查看FileUpload命令。就实际INSERTING而言,.NET数据类型将是byte []。在任何情况下,您的ORM都应该为您处理此问题。还记得你应该存储文件大小,文件名和提供的mimetype,你很快就会需要它们。

3)显示:这是大多数人绊倒的人。您需要创建一种方法来请求显示图像文件。最好的方法是实现自定义IHttpHandler。然后选择图像数据,文件名,mimetype和文件长度。在标题中推送mimetype和filename,将内容长度设置为文件长度,并将二进制数据流式传输到输出流。

答案 7 :(得分:0)

另一个非常容易的选项

将图像转换为Base64字符串 将其存储在varchar字段

要显示它,只需将其从base64转换为二进制....

这适用于任何数据库引擎,在.net中从二进制转换为base64需要几微秒......