SQL server 2008中的批量镜像存储

本文关键字:镜像 存储 server 2008 SQL | 更新日期: 2023-09-27 18:03:27

我正在使用VS 2008在c# .net 4.0中创建一个asp.net应用程序&MS SQL Server 2008 R2。我想为每个订单上传图像(.bmp)并将其存储在与其订单对应的DB中。必须在请求View功能时检索它。

我的要求是存储图像并检索它。每天的订单数量可能在50个左右。随着数量的增加,它可能会超过开销。请建议我有效的方法来克服内存问题

SQL server 2008中的批量镜像存储

那么,您可以将它们作为varbinary(max)存储在数据库中,或者将URL存储到文件中。如果您每天有50张图片,那么使用file and URL方法可能会更好。

两者都有优点和缺点。但正如你所说,你想把它们存储在数据库中:我认为数据库存储的一个大问题是,没有人可以随意重命名/删除文件夹,或者打乱其中的文件。数据库的另一个优点是,您可以恢复数据库,而不必尝试保持文件夹同步。

你可以使用ImageConverter在字节数组和图像之间进行转换

     var stream = new MemoryStream();
     var imageData = DataAccess.GetImageData(); //Returns a System.Linq.Binary for me
     var imgageBinaryData = imageData.ImageData.ToArray(); //This returns a byte array
     var img =  Image.FromStream(stream);      //Here is your image ready for displaying

然后返回

     var stream = new MemoryStream();
     img.Save(stream,System.Drawing.Imaging.ImageFormat.Jpeg);
     var myBytes = ms.ToArray();
编辑:哦,将它们存储为Jpeg而不是Bmp将节省很多空间