none
Gravar imagem no BD RRS feed

  • Pergunta

  • Tenho uma imagem jpg em uma pasta no servidor. Tenho de gravar ela em um BD

    Li vários artigos dizendo pra transforma-la em um array de bytes e eles utilizam o fileupload. Mas minha imagem ja esta carregada no servidor. E não é permitido fazer Fileupload.Filename = "foto.jpg" pois filename é readonly

    segunda-feira, 24 de fevereiro de 2014 17:57

Respostas

  • Escreva essas duas métodos em uma classe qualquer de sua preferencia:

    public static byte[] ConvertImageToByteArray(System.Drawing.Image image, ImageFormat imageFormat)
    {
    	if (image == null)
    		return null;
    	MemoryStream ms = new MemoryStream();
    	image.Save(ms, imageFormat); 
    	return ms.ToArray();
    }
    
    public static System.Drawing.Image ConvertByteArrayToImage(byte[] byteArray)
    {
    	if (byteArray == null || byteArray.Length == 0)
    	{ return (null); }
    	return (System.Drawing.Image.FromStream(new MemoryStream(byteArray)));
    }

    Para pegar a imagem que ta no servidor e transforma-la em Array de Bytes seria mais ou menos assim dependendo do caminho da imagem

    System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath(".") + "/pastadafoto/1.jpg");
    byte[] imgByte = ConvertImageToByteArray(img, ImageFormat.Jpeg);

    Para gravar na base veja o video!

    http://www.youtube.com/watch?v=UxZ2v7Yd9Jo


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta jjunior.net sexta-feira, 28 de fevereiro de 2014 01:52
    quinta-feira, 27 de fevereiro de 2014 20:36

Todas as Respostas

  • Bom dia jjunior.net,

    Certo, deixe-me ver se entendi, a sua imagem já esta em um servidor e esse servidor é o mesmo que possui o seu banco de dados certo?


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 25 de fevereiro de 2014 13:59
  • Isso mesmo

    É uma imagem de uma webcam. Tiro a foto e ela armazena no servidor. Quero gravar ela no BD de depois apaga-la da pasta do servidor

    Tentei armazenar ela no computador do usuario para depois salvar no BD. Mas esbaro sempre na mesma dúvida. Como carregar ja que o fileupoload.filename é readonly?
    • Editado jjunior.net terça-feira, 25 de fevereiro de 2014 15:40
    terça-feira, 25 de fevereiro de 2014 15:35
  • Você pode tentar passar o caminho da imagem onde ela está no servidor e a transforma em array de bytes,imagino que não alteraria muito você só iria mudar o caminho. 
    quinta-feira, 27 de fevereiro de 2014 19:30
  • Escreva essas duas métodos em uma classe qualquer de sua preferencia:

    public static byte[] ConvertImageToByteArray(System.Drawing.Image image, ImageFormat imageFormat)
    {
    	if (image == null)
    		return null;
    	MemoryStream ms = new MemoryStream();
    	image.Save(ms, imageFormat); 
    	return ms.ToArray();
    }
    
    public static System.Drawing.Image ConvertByteArrayToImage(byte[] byteArray)
    {
    	if (byteArray == null || byteArray.Length == 0)
    	{ return (null); }
    	return (System.Drawing.Image.FromStream(new MemoryStream(byteArray)));
    }

    Para pegar a imagem que ta no servidor e transforma-la em Array de Bytes seria mais ou menos assim dependendo do caminho da imagem

    System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath(".") + "/pastadafoto/1.jpg");
    byte[] imgByte = ConvertImageToByteArray(img, ImageFormat.Jpeg);

    Para gravar na base veja o video!

    http://www.youtube.com/watch?v=UxZ2v7Yd9Jo


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta jjunior.net sexta-feira, 28 de fevereiro de 2014 01:52
    quinta-feira, 27 de fevereiro de 2014 20:36