Dúvida com arquivos dentro do banco de dados
Pessoal bom dia, tudo bem? espero que sim!
Preciso de uma ajuda, peguei um banco de dados para trabalhar e acredito que o esquema dele era bem antigo, porque normalmente os arquivos são guardados no banco de dados pelo caminho deles, mas nesse caso, não foram guardados dessa forma. Foram guardados com o que se parece com o código de conteúdo do arquivo, tenho várias mas não consigo abrir nenhum. Já tentei colocar no notepad++ o conteúdo e salvar como a extensão do arquivo mas dá erro na hora de abrir.
Segue o código de uma imagem por exemplo:
?PNG IHDRV???|usRGB???gAMA???a pHYs???o?d??IDATx^??xG?????????\?w?aZ?rxw??M? ?I6??!13?-33J?-[[???,[`dKFIf????????g4?H??? ..."
Tem mais um conteúdo pela frente, teve alguns caracteres que são inválidos mas o notepad++ reconhece eles, alguma ideia de como consigo abrir esses arquivo?
Preciso de uma ajuda, peguei um banco de dados para trabalhar e acredito que o esquema dele era bem antigo, porque normalmente os arquivos são guardados no banco de dados pelo caminho deles, mas nesse caso, não foram guardados dessa forma. Foram guardados com o que se parece com o código de conteúdo do arquivo, tenho várias mas não consigo abrir nenhum. Já tentei colocar no notepad++ o conteúdo e salvar como a extensão do arquivo mas dá erro na hora de abrir.
Segue o código de uma imagem por exemplo:
?PNG IHDRV???|usRGB???gAMA???a pHYs???o?d??IDATx^??xG?????????\?w?aZ?rxw??M? ?I6??!13?-33J?-[[???,[`dKFIf????????g4?H??? ..."
Tem mais um conteúdo pela frente, teve alguns caracteres que são inválidos mas o notepad++ reconhece eles, alguma ideia de como consigo abrir esses arquivo?
Jonathan
Curtidas 0
Respostas
Emerson Nascimento
06/05/2021
não guardaram o caminho, guardaram o próprio arquivo.
isso é bom para o caso de backup e/ou de trocar o servidor: basta levar o banco, sem precisar se preocupar com arquivos 'agregados'.
tente o seguinte, para o caso apontado acima:
- pegue o conteudo do campo exatamente como está gravado (todo o conteúdo)
- jogue esse conteúdo em um novo (em branco) arquivo no notepad++
- salve o arquivo como TESTE.PNG
- feche o arquivo no notepad++
- dê um duplo-clique no arquivo TESTE.PNG
isso é bom para o caso de backup e/ou de trocar o servidor: basta levar o banco, sem precisar se preocupar com arquivos 'agregados'.
?PNG IHDRV???|usRGB???gAMA???a pHYs???o?d??IDATx^??xG?????????\\?w?aZ?rxw??M? ?I6??!13?-33J?-[[???,[`dKFIf????????g4?H??? ..."
tente o seguinte, para o caso apontado acima:
- pegue o conteudo do campo exatamente como está gravado (todo o conteúdo)
- jogue esse conteúdo em um novo (em branco) arquivo no notepad++
- salve o arquivo como TESTE.PNG
- feche o arquivo no notepad++
- dê um duplo-clique no arquivo TESTE.PNG
GOSTEI 0
Jonathan
06/05/2021
não guardaram o caminho, guardaram o próprio arquivo.
isso é bom para o caso de backup e/ou de trocar o servidor: basta levar o banco, sem precisar se preocupar com arquivos 'agregados'.
tente o seguinte, para o caso apontado acima:
- pegue o conteudo do campo exatamente como está gravado (todo o conteúdo)
- jogue esse conteúdo em um novo (em branco) arquivo no notepad++
- salve o arquivo como TESTE.PNG
- feche o arquivo no notepad++
- dê um duplo-clique no arquivo TESTE.PNG
Tentei isso mas mesmo assim gera um erro, que não há suporte para esse tipo de arquivo, testei pelo visualizador de fotos do windows 10, testei pelo app do paint, todos geram o mesmo erro. Tentei também abrir arquivo pdf e ele aponta um erro informando que não foi possível abrir o arquivo ou ele está corrompido.
isso é bom para o caso de backup e/ou de trocar o servidor: basta levar o banco, sem precisar se preocupar com arquivos 'agregados'.
?PNG IHDRV???|usRGB???gAMA???a pHYs???o?d??IDATx^??xG?????????\\\\?w?aZ?rxw??M? ?I6??!13?-33J?-[[???,[`dKFIf????????g4?H??? ..."
tente o seguinte, para o caso apontado acima:
- pegue o conteudo do campo exatamente como está gravado (todo o conteúdo)
- jogue esse conteúdo em um novo (em branco) arquivo no notepad++
- salve o arquivo como TESTE.PNG
- feche o arquivo no notepad++
- dê um duplo-clique no arquivo TESTE.PNG
GOSTEI 0
Emerson Nascimento
06/05/2021
você não disse que sgbdr usa, então vão duas dicas pra tentar no SQL Server:
https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/
https://www.jitendrazaa.com/blog/sql/sqlserver/export-documents-saved-as-blob-binary-from-sql-server/
https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/
https://www.jitendrazaa.com/blog/sql/sqlserver/export-documents-saved-as-blob-binary-from-sql-server/
GOSTEI 0
Chromusmaster
06/05/2021
você não disse que sgbdr usa, então vão duas dicas pra tentar no SQL Server:
https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/
https://www.jitendrazaa.com/blog/sql/sqlserver/export-documents-saved-as-blob-binary-from-sql-server/
https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/
https://www.jitendrazaa.com/blog/sql/sqlserver/export-documents-saved-as-blob-binary-from-sql-server/
Tenho uma procedure que faz essa extração. Colocar ela aqui:
CREATE OR ALTER FUNCTION EXPORTAIMAGEM(@IDIMAGEM uniqueidentifier) RETURNS NVARCHAR(MAX) as BEGIN EXEC master.dbo.xp_cmdshell 'md c:\\EXPORTA'; DECLARE @pctStr INT; DECLARE @image VARBINARY(MAX); DECLARE @MENSAGEM NVARCHAR(MAX); Declare @CreatedDate date; SET @image= ('SUA QUERY DE BUSCA NA TABELA E NO CAMPO DE IMAGENS VEM AQUI'=@IDIMAGEM) SET @CreatedDate=('SUA QUERY DE BUSCA NA TABELA E NO CAMPO DE DATA DE CRIACAO VEM AQUI=@IDIMAGEM); DECLARE @filePath NVARCHAR(MAX) SET @filePath = 'C:\\EXPORTA\\'+CONVERT(nvarchar(MAX),YEAR(@CreatedDate))+'_'+CONVERT(nvarchar(MAX),Month(@CreatedDate))+'_'+CONVERT(nvarchar(MAX),@IDIMAGEM)+'.jpg' EXEC sp_OACreate 'ADODB.Stream', @pctStr OUTPUT EXEC sp_OASetProperty @pctStr, 'Type', 1 EXEC sp_OAMethod @pctStr, 'Open' EXEC sp_OAMethod @pctStr, 'Write', NULL, @image EXEC sp_OAMethod @pctStr, 'SaveToFile', NULL,@filePath, 2 EXEC sp_OAMethod @pctStr, 'Close' EXEC sp_OADestroy @pctStr SET @MENSAGEM=(SELECT CASE WHEN @IMAGE IS NULL THEN 'Imagem_'+ CONVERT(nvarchar(MAX),@IDIMAGEM) +'.jpg' +' ERRO! VERIFIQUE SE A IMAGEM EXISTE CADASTRADA NO BANCO DE DADOS!' ELSE 'Imagem_'+CONVERT(nvarchar(MAX),@IDIMAGEM)+'.jpg_SUCESSO!' END) RETURN @MENSAGEM END
GOSTEI 0
Emerson Nascimento
06/05/2021
essa function do Chromusmaster deve atender à sua necessidade, Jonathan.
você só precisa ser atentar ao fato de que a function grava o arquivo com extensao jpg e no caso que você apresentou deve ser png
você só precisa ser atentar ao fato de que a function grava o arquivo com extensao jpg e no caso que você apresentou deve ser png
GOSTEI 0