O que estou fazendo de errado com o conteúdo e os cabeçalhos HTTPRESPOND ao baixar um arquivo?
-
20-09-2019 - |
Pergunta
Quero baixar um arquivo PDF de um banco de dados do SQL Server, armazenado em uma coluna binária. Há um linkbutton em uma página ASPX. O manipulador de eventos deste botão se parece com o seguinte:
protected void LinkButtonDownload(object sender, EventArgs e)
{
...
byte[] aByteArray;
// Read binary data from database into this ByteArray
// aByteArray has the size: 55406 byte
Response.ClearHeaders();
Response.ClearContent();
Response.BufferOutput = true;
Response.AddHeader("Content-Disposition", "attachment; filename=" + "12345.pdf");
Response.ContentType = "application/pdf";
using (BinaryWriter aWriter = new BinaryWriter(Response.OutputStream))
{
aWriter.Write(aByteArray, 0, aByteArray.Length);
}
}
Uma "caixa de diálogo Open/salvar arquivo" é oferecida no meu navegador. Quando eu guardo esse arquivo "12345.pdf" para o disco, o arquivo tem um tamanho de 71523 byte. Os 16kb adicionais no final do arquivo PDF são o código HTML da minha página (como posso ver quando visualizo o arquivo em um editor). Estou confuso porque acreditava que o ClearContent e o ClearHeaders garantiriam que o conteúdo da página não seja enviado junto com o conteúdo do arquivo.
O que eu estou fazendo errado aqui?
Obrigado pela ajuda!
Solução
Eu acho que você quer uma resposta. END no final deste método.
Outras dicas
Em uma rápida olhada, você está perdendo a resposta.END ();