如何在SQL Server数据库中保存图像?

3

我希望将使用 HttpPostedFileBase 上传的图像保存到数据库中。

我该怎么做?我应该如何构建数据库字段?我需要编写什么代码来将其保存到数据库中?


你已经做到哪一步了?这只是将一堆字节插入到你的数据库中的问题。你能展示一下你目前的方法,并突出你卡住的位置吗? - marcind
这不是重复的,那个问题有点像意见维基讨论。虽然相关且有趣,但是是个好链接。 - MrBoJangles
4个回答

1
if(uploadedImage == null || uploadedImage.ContentLength == 0)
{
    // no image
}

var image = new Image();
image.Name = uploadedImage.FileName;
image.ContentType = uploadedImage.ContentType;
int length = uploadedImage.ContentLength;
byte[] buffer = new byte[length];
uploadedImage.InputStream.Read(buffer, 0, length);
image.Data = buffer;

Image类是数据库实体,因此您需要在数据库中包含NameContentTypeDatauploadedImageHttpPostedFileBase


1
[HttpPost]
    public ActionResult SaveImage(HttpPostedFileBase image)
    {
       Foo foo=new Foo();
       if (image != null)
            {
                foo.ImageMimeType = image.ContentType;//public string ImageMimeType { get; set; }
                foo.ImageData = new byte[image.ContentLength];//public byte[] ImageData { get; set; }
                image.InputStream.Read(product.ImageData, 0, image.ContentLength);
            }
            fooRepository.Save(foo);
        }
    }

1

1

首先,将图像存储在数据库中是一个有争议的话题,因此请确保考虑清楚这是否真的是您想要的。有关详细讨论,请参见:

在数据库中存储图像-是还是不是?

接下来要考虑的是使用什么技术。您将使用Linq2SQL、NHibernate、Entity Framework还是纯ADO.NET?选择技术时,应考虑整个应用程序架构,而不仅仅是专注于存储图像(除非这就是您的应用程序所做的全部)。一旦确定了这一点,请查看所选技术如何处理二进制数据。

您可以通过HttpPostedFileBase.InputStream访问二进制数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接