Usuário com melhor resposta
Trabalhando com imagem em base64

Pergunta
-
Boa tarde!
Tenho a seguinte situação:
01 - Criei um campo do tipo VARBINARY(MAX)
02 - Converti uma imagem em base64
03 - Pguei esta imagem já convertida em base64 para e inseri ela no campo transformando a informação para VARBINARY utilizando CONVERT(VARBINARY(MAX), @string)
04 - Preciso abrir novamente esta imagem, para isso, capturo a informação que está gravada e faço a conversão para VARCHAR(MAX) utilizando CONVERT(VARCHAR(MAX), @string) no entanto o conteúdo da imagem fica pela metade ou seja o meu conteúdo vai além do tamanho máximo disponível no tipo VARCHAR(MAX)
COMO FAÇO PARA CAPTURAR TODA A INFORMAÇÃO sendo que preciso ela integralmente para converter de base64 para jpg
Alguma dica?
Respostas
-
Nao converta em base64:
Aqui esta uma rotina mais ou menos generica que eu uso:
public byte[] ImgtoBytes(string path) { byte[] arraybytes = null; FileInfo img = new FileInfo(path); long numeroBytes = img.Length; FileStream fStream = new FileStream(caminhoImagem, FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fStream); arraybytes = br.ReadBytes((int)numeroBytes); return arraybytes; } void SalvarImagem(string path) { byte[] dadosDaImagem = ImgtoBytes(path); SqlConnection con = new SqlConnection("Server=" + "Nome Servidor" + "; Database="Nome da Base de dados"; User ID=Cliente; Password=cliente; Trusted_Connection=False;"); string query = "INSERT INTO Tabela(Imagem) VALUES(@Imagem)"; SqlCommand cmd = new SqlCommand(query, con); cmd.Parameters.Add(new SqlParameter("@Imagem", (object)dadosDaImagem)); con.Open(); cmd.ExecuteNonQuery(); con.Close(); }
aqui um artigo completo:
http://www.macoratti.net/12/08/c_arisql.htm
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade sexta-feira, 25 de novembro de 2016 19:49
- Marcado como Resposta Rafael Binda sábado, 26 de novembro de 2016 12:19
Todas as Respostas
-
Olá Rafael,
Qual a sua necessidade de gravar no banco em VARBINARY e não em VARCHAR (Já com o conteúdo em base64)?
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Editado André SeccoMVP sexta-feira, 25 de novembro de 2016 19:42
-
Nao converta em base64:
Aqui esta uma rotina mais ou menos generica que eu uso:
public byte[] ImgtoBytes(string path) { byte[] arraybytes = null; FileInfo img = new FileInfo(path); long numeroBytes = img.Length; FileStream fStream = new FileStream(caminhoImagem, FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fStream); arraybytes = br.ReadBytes((int)numeroBytes); return arraybytes; } void SalvarImagem(string path) { byte[] dadosDaImagem = ImgtoBytes(path); SqlConnection con = new SqlConnection("Server=" + "Nome Servidor" + "; Database="Nome da Base de dados"; User ID=Cliente; Password=cliente; Trusted_Connection=False;"); string query = "INSERT INTO Tabela(Imagem) VALUES(@Imagem)"; SqlCommand cmd = new SqlCommand(query, con); cmd.Parameters.Add(new SqlParameter("@Imagem", (object)dadosDaImagem)); con.Open(); cmd.ExecuteNonQuery(); con.Close(); }
aqui um artigo completo:
http://www.macoratti.net/12/08/c_arisql.htm
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade sexta-feira, 25 de novembro de 2016 19:49
- Marcado como Resposta Rafael Binda sábado, 26 de novembro de 2016 12:19
-
-