Array
(
)

Varbinary

Diego Gonçalves
   - 21 mai 2013

Boa tarde pessoal,
queria saber como faço para exibir no browser arquivos varbinary que estão gravados no banco (SQL Server).
estou usando o seguinte codigo:

Response.ContentType = extensao.Equals(".doc") ? "Application/msword" : "Application/pdf";
Response.AppendHeader("FileName", vw_NomeContrato);
Response.AppendHeader("Content-Disposition", "attachment; filename=" + vw_NomeContrato);
Response.BinaryWrite(vw_Documento);
Response.End();

onde:
vw_NomeContrato é uma variável (string) q guarda o nome do arquivo (por ex.: "Contrato.docx").
vw_Documento é uma variável (byte[]) que guarda o valor varbinary que vem do banco.

O problema é que quando faço o download do arquivo, ele vem com problema. Não da pra abrir.
Já teve casos em que abri o arquivo, porém o que deveria estar nele, não estava.

Aguardo.

Thiago Santana
   - 28 mai 2013

Tente algo como isso aqui:
byteViewer = Campo Varbinary do seu banco de dados;
Response.Buffer = true;
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=Arquivo.pdf");
Response.BinaryWrite(byteViewer);
Response.Flush();
Response.End();

Espero ter ajudado!

Diego Gonçalves
   - 02 jun 2013

Tentei esse codigo e nao deu certo. To achando q é na gravacao.

to usando o seguinte codigo:

byte[] arquivo = new byte[fupContrato.PostedFile.InputStream.Length + 1];
fupContrato.PostedFile.InputStream.Read(arquivo, 0, arquivo.Length);
c.DocumentoContrato = arquivo;

ONDE:
- fupContrato é um FileUpload

No banco, o valor no campo (que está como varbinary) aparece desse jeito: 0x50