O que estou fazendo de errado com o conteúdo e os cabeçalhos HTTPRESPOND ao baixar um arquivo?

StackOverflow https://stackoverflow.com/questions/2465485

  •  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!

Foi útil?

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 ();

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top