gpt4 book ai didi

C#.NET 文件下载仅适用于 IE

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:02 26 4
gpt4 key购买 nike

我的站点中有一个页面在服务器上动态生成 PDF 报告,同时向用户浏览器显示“请稍候”消息。完成后,它将唯一的文件路径放入 session 中,然后打开 download.aspx,它是空的,除了 page_load 函数中的以下 c# 代码。

    string fileUID = (string)(Session["fileUID"]);
string FilePath = @fileUID;
byte[] fileBytes = System.IO.File.ReadAllBytes(FilePath);
string sFileName = "Report.pdf";

System.Web.HttpContext context = System.Web.HttpContext.Current;
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AppendHeader("content-length", fileBytes.Length.ToString());
context.Response.ContentType = "application/octet-stream";
context.Response.AppendHeader("content-disposition", "attachment; filename=" + sFileName);
context.Response.BinaryWrite(fileBytes);
context.Response.Flush();
System.IO.File.Delete(FilePath);
context.ApplicationInstance.CompleteRequest();

在 IE 中,这会弹出下载对话框,允许用户下载文件。然而,在 chrome、firefox 和 safari 中,它永远停留在请等待页面上......

我还尝试过为 PDF 文件指定 mime 类型,而不是指定内容配置以使 PDF 在浏览器窗口中显示,再次在 Internet Explorer 中完美运行,但在任何其他浏览器中都无法正常运行。

在本地主机上测试和上传到服务器时都会出现此问题。

我在这里和更广阔的世界都进行了搜索,似乎找不到其他人遇到同样的问题。

请有人告诉我我的方法的错误。

最佳答案

我就是这样

    Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";//check your valid file type
Response.AddHeader("Content-Disposition", "attachment;filename=" + targetFileName);
Response.Charset = "";

using (System.IO.StreamWriter writer = new StreamWriter(Response.OutputStream)
{
//writer.Write(contentBytes);
}
Response.Flush();
Response.Close();
Context.ApplicationInstance.CompleteRequest();

确保在调用 CompletedRequest() 之前关闭或处置所有流。

关于C#.NET 文件下载仅适用于 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17464740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com