我正在使用 VS 2008 和 MS SQL Server 2008 R2 在 C# .net 4.0 中创建一个 asp.net 应用程序。我想为每个订单上传图片(.bmp)并将其存储在与其订单对应的数据库中。当请求查看功能时,必须检索它。
我的要求是存储图像并检索它。每天的订单数量可能在 50 个左右。随着数量的增加,它可能会过度开销。请建议我克服内存问题的有效方法。
我正在使用 VS 2008 和 MS SQL Server 2008 R2 在 C# .net 4.0 中创建一个 asp.net 应用程序。我想为每个订单上传图片(.bmp)并将其存储在与其订单对应的数据库中。当请求查看功能时,必须检索它。
我的要求是存储图像并检索它。每天的订单数量可能在 50 个左右。随着数量的增加,它可能会过度开销。请建议我克服内存问题的有效方法。
好吧,您可以将它们作为 varbinary(max) 存储在数据库中,也可以将 URL 存储到文件中。如果您每天有 50 张图片,那么使用文件和 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 将节省大量空间