Что я делаю не так с содержимым и заголовками HttpResponse при загрузке файла? - PullRequest
0 голосов
/ 17 марта 2010

Я хочу загрузить файл PDF из базы данных SQL Server, который хранится в двоичном столбце. На странице aspx есть кнопка LinkButton. Обработчик событий этой кнопки выглядит так:

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

В моем браузере предлагается «Диалог открытия / сохранения файла». Когда я сохраняю этот файл «12345.pdf» на диск, размер файла составляет 71523 байт. Дополнительные 16 КБ в конце PDF-файла - это HTML-код моей страницы (как я вижу, просматривая файл в редакторе). Я запутался, потому что полагал, что ClearContent и ClearHeaders будут гарантировать, что содержимое страницы не будет отправлено вместе с содержимым файла.

Что я здесь не так делаю?

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 17 марта 2010

На первый взгляд, вам не хватает Response.End ();

3 голосов
/ 17 марта 2010

Я думаю, вам нужен Response.End в конце этого метода.

...