2010-08-25 14 views
3

Je souhaite enregistrer les images téléchargées avec httppostedfilebase dans une base de données.Comment sauvegarder une image dans une base de données SQL Server?

Comment faire? Comment structurer les champs de la base de données? Quel code puis-je écrire pour l'enregistrer dans la base de données?

+0

Jusqu'où êtes-vous arrivé? C'est simplement une question d'insertion d'un tas d'octets dans votre base de données. Pouvez-vous montrer votre approche actuelle et mettre en évidence l'endroit où vous êtes coincé? – marcind

+0

duplication possible de [Comment enregistrer l'image dans la base de données en utilisant C#] (http://stackoverflow.com/questions/3548401/how-to-save-image-in-database-using-c) –

+0

Ceci n'est pas un doublon , cette autre question était en quelque sorte une discussion wiki d'opinion. C'est lié et intéressant cependant, bon lien. – MrBoJangles

Répondre

1

Tout d'abord, le stockage des images dans une base de données est un sujet controversé, assurez-vous donc d'examiner si cela est vraiment ce que vous voulez. Pour une discussion détaillée, voir:

Storing Images in DB - Yea or Nay?

La prochaine chose à considérer est ce que la technologie à utiliser. Utiliserez-vous Linq2SQL, NHibernate, Entity Framework ou ADO.NET? Lorsque vous choisissez la technologie, vous devez tenir compte de l'architecture globale de l'application et ne pas vous concentrer uniquement sur le stockage des images (à moins que ce soit le cas de toutes les applications). Une fois cela réglé, vérifiez comment la technologie choisie gère les données binaires.

Vous pouvez accéder aux données binaires via HttpPostedFileBase.InputStream.

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 classe est l'entité de base de données, vous devez donc Name, ContentType et Data dans votre base de données. uploadedImage est HttpPostedFileBase.

+0

dois-je ouvrir un flux ??? –

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); 
     } 
    }