Usuário com melhor resposta
Como salvar uma imagem em um banco de dados?

Pergunta
-
Respostas
-
Boa noite Márcio,
Para armazenar uma imagem no banco de dados, você pode fazer de duas maneiras:
- Referência: você pode salvar a imagem em um diretório e no banco de dados apenas o seu caminho, para ter apenas a sua referência. Por exemplo: a imagem "MSDN.PNG" está no diretório "C:/MSDN_Imagens/", logo a referência armazenada no campo será "C:/MSDN_Imagens/MSDN.PNG";
- Arquivo: para armazenar o arquivo da imagem no BD, você pode utilizar alguns tipos de dados ( VARBINARY(MAX) para imagens de até 2GB, FILESTREAM para imagens acima desse tamanho). Abaixo segue um exemplo de como inserir uma imagem no BD.
CREATE TABLE Pessoa ( IdPessoa int, Nome varchar(50) not null, Foto varbinary(max) not null ) INSERT INTO Employees (IdPessoa, Nome, Foto ) SELECT 1, 'Marcio', BulkColumn FROM Openrowset( Bulk 'C:\MSDN_Imagens\foto.bmp', Single_Blob) as Foto
Abs.
Bruno Destro
Dicas de programação em .net, C# e SQL - http://smcode.com.br/
-
Boa tarde.
Só para complementar a resposta do Bruno, em alguns momentos vale mais a pena utilizar a primeira forma (Referência), pois, dependendo do ambiente e até mesmo da lógica do aplicativo, o sistema poderá ficar muito pesado e lento.
Sem falar que salvando no sistema de arquivos ainda é possível ter várias regras de negócio ou até mesmo storages diferentes para tal função, fazendo com que o sistema melhore sua dinamicidade e escalabilidade.
Att., Rafael Simor
- Marcado como Resposta Marcos SJ segunda-feira, 18 de janeiro de 2016 12:55
Todas as Respostas
-
Marcio,
Segue post do Pedro Junior Galvão, bem explicativo. Vê se te ajuda.
https://pedrogalvaojunior.wordpress.com/2012/07/20/dica-armazenando-arquivos-de-imagem-no-sql-server-2008-e-r2-atraves-do-comando-openrowset-em-conjunto-com-a-opcao-bulk/
Qualquer coisa, avisa que podemos seguir trocando ideias.
Att,
Marcos Lanzarini
Administrador de Banco de Dados
Microsoft Certified Professional
Se a resposta foi útil, por favor, vote-a como útil. Se isso resolveu seu caso, marque-a como resposta.- Sugerido como Resposta MarcosLanzarini sexta-feira, 15 de janeiro de 2016 19:48
- Não Sugerido como Resposta MarcosLanzarini sexta-feira, 15 de janeiro de 2016 19:48
- Sugerido como Resposta MarcosLanzarini sexta-feira, 15 de janeiro de 2016 19:48
-
Você pode guarda-la usando base-64.
Toda imagem que for enviada ao seu servidor deve ser convertida em base-64, assim vc transforma a imagem em caracteres e pode guardar em um campo do seu banco que tenha o tipo "text" ( text - pois quanto maior o tamanho da imagem enviada ao seu servidor mais caracteres ela vai gerar )
Veja uns exemplos:
Conversor de imagem para Base64 online:
Exemplos de código:
http://stackoverflow.com/questions/21325661/convert-image-path-to-base64-string
http://stackoverflow.com/questions/17874733/converting-image-to-base64
If the answer was helpful vote / mark as answered
Se a resposta foi útil vote / marque como respondido
- Editado Jean LLopes sexta-feira, 15 de janeiro de 2016 19:17
- Sugerido como Resposta Jean LLopes sexta-feira, 15 de janeiro de 2016 19:17
-
Boa noite Márcio,
Para armazenar uma imagem no banco de dados, você pode fazer de duas maneiras:
- Referência: você pode salvar a imagem em um diretório e no banco de dados apenas o seu caminho, para ter apenas a sua referência. Por exemplo: a imagem "MSDN.PNG" está no diretório "C:/MSDN_Imagens/", logo a referência armazenada no campo será "C:/MSDN_Imagens/MSDN.PNG";
- Arquivo: para armazenar o arquivo da imagem no BD, você pode utilizar alguns tipos de dados ( VARBINARY(MAX) para imagens de até 2GB, FILESTREAM para imagens acima desse tamanho). Abaixo segue um exemplo de como inserir uma imagem no BD.
CREATE TABLE Pessoa ( IdPessoa int, Nome varchar(50) not null, Foto varbinary(max) not null ) INSERT INTO Employees (IdPessoa, Nome, Foto ) SELECT 1, 'Marcio', BulkColumn FROM Openrowset( Bulk 'C:\MSDN_Imagens\foto.bmp', Single_Blob) as Foto
Abs.
Bruno Destro
Dicas de programação em .net, C# e SQL - http://smcode.com.br/
-
Boa tarde.
Só para complementar a resposta do Bruno, em alguns momentos vale mais a pena utilizar a primeira forma (Referência), pois, dependendo do ambiente e até mesmo da lógica do aplicativo, o sistema poderá ficar muito pesado e lento.
Sem falar que salvando no sistema de arquivos ainda é possível ter várias regras de negócio ou até mesmo storages diferentes para tal função, fazendo com que o sistema melhore sua dinamicidade e escalabilidade.
Att., Rafael Simor
- Marcado como Resposta Marcos SJ segunda-feira, 18 de janeiro de 2016 12:55