IE在请求完成之前呈现文件下载

时间:2017-06-07 13:49:03

标签: c# .net internet-explorer download httpresponse

我正在尝试将一个文件提供给浏览器,我遇到了一个奇怪的问题,即Internet Explorer在HTTP请求完成之前将文件下载呈现给用户。

这是我的代码:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    var client = new System.Net.WebClient();
    Byte[] buffer = client.DownloadData(pdfUrl);

    if (buffer != null)
    {
        Response.BufferOutput = true;
        Response.Buffer = true;
        Response.AddHeader("content-type", client.ResponseHeaders["content-type"]);
        Response.AddHeader("Content-disposition", client.ResponseHeaders["content-disposition"]);
        Response.BinaryWrite(buffer);
        Response.Flush();
    }
}

但是,在HTTP请求完成之前,将显示浏览器底部的“您是否要下载此文件”对话框。

这意味着如果用户在HTTP请求完成之前单击“打开”或“下载”,则会下载损坏或丢失的文件,从而导致错误。

我原以为将Response.BufferResponse.BufferOutput设置为true可以解决问题,但是在将文件提交给浏览器之前强制响应等待请求完成,但是事实并非如此。

我怀疑在Response.BinaryWrite完成之前,该文件正在下载。

编辑:如果我在点击“打开/下载”之前等待HTTP请求完成,则文件打开/下载完全正常。

编辑2 :我注意到在HTTP请求正在处理时,IE不了解内容类型标头;只有在请求完成后才会收到此消息。我认为这不是问题,但值得注意。

0 个答案:

没有答案