取决于图像尺寸
如果它们很大(超过一兆左右)并且你有很多它们或者它们是开放式的 - 那么最好存储在文件系统上并将该位置存储在数据库中。
优点:
- 更好的数据库增长特征
- 更容易进行增量备份
- 更容易使用分层存储(对于频繁使用的图像,存储速度快,对于不经常使用的图像存储速度慢)
- 可以随机访问部分文件(不需要阅读整个文件)
醇>
缺点:
- 难以做交易
- 需要管理的单独地点
- 需要管理的单独访问控制
- blob更容易编程
醇>
如果图像在几k范围内,并且你的数量有限,那么只需使用MemoryStream(与任何流一样保存)并将字节传输到blob字段。
SQL Server为您提供两个世界中最好的文件系统字段类型(将blob外部化为文件,但其他方式就像blob一样)
在其他字段中存储有关图像的额外信息也很不错 - 这样您就不必阅读图像blob以便用它做一些事情。例如:
- 尺寸
- 类型
- 如果是多页(如TIFF),页数
醇>
我在博客上写了关于数据库中图像的一些注意事项:
http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/03/images-in-databases-part-i-what-to-store.aspx
http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/04/images-in-databases-part-ii-web-images-are-random-access.aspx
http://www.atalasoft.com/cs/blogs/loufranco/archive/2009/04/28/document-storage-database-blobs-or-the-filesystem.aspx
使用BLOB字段类型并照常写入。请记住同时存储图像类型,当您想要显示图像时,必须具有此类型。