gpt4 book ai didi

c# - 无法打开下载保存对话框

转载 作者:行者123 更新时间:2023-11-30 21:17:58 25 4
gpt4 key购买 nike

使用下面的代码我无法显示打开/另存为文件对话框:

        public void ProcessRequest(HttpContext context)
{
string link = context.Request.QueryString["Link"];
string extension = Path.GetExtension(link);
string fileName = Path.GetFileName(link);
string fullPath =
String.Format("{0}\\{1}",
context.Server.MapPath("~/Content/Uploads/"),
fileName);

if (File.Exists(fullPath))
{
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.AddHeader(
"Content-Length",
new FileInfo(fullPath).Length.ToString());
string contentType;
switch (extension)
{
default:
contentType = "application/octet-stream";
break;
}
context.Response.ContentType = contentType;
context.Response.AddHeader(
"Content-Disposition",
String.Format("attachment; filename={0}", fileName));
context.Response.WriteFile(fullPath, true);
context.Response.Flush();
}
}

我曾尝试关闭响应、保持响应打开、使用 TrasmitFile(),但我从未收到任何对话框或任何反馈。我也试过调试它,但没有抛出异常。在 IE 7/8 和 Chrome 中试过。感谢您的帮助。

谢谢!

下面是 Fiddler 输出:

HTTP/1.1 200 OK Cache-Control: private Content-Length: 3813 Content-Type: application/octet-stream Server: Microsoft-IIS/7.5 Content-Disposition: attachment; filename=b1af9b34-28cc-4479-a056-8c55b41a5ece.txt X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Thu, 23 Dec 2010 21:51:58 GMT

* Home
* Hotels
* Reviews
* Community
* Travel Guide
* Travel Insurance
* Contact us

* FIDDLER: RawDisplay truncated at 128 characters. Right-click to disable truncation. *

最佳答案

终于明白了。我贴的代码其实没有问题。正如您在 Fiddler 输出中看到的那样,文本文件的内容已成功写入响应流,并且使用的 header 也是正确的。实际问题来自实际的 http 请求是如何发出的。我用了一个

$.get(urlToGenericHandler);

使用 jQuery 请求。具体来说,我无法使用 AJAX 或回调模型下载文件的原因超出了本答案的范围。查看支持的 jQuery 数据类型 here

无论如何,我将调用从使用 AJAX 更改为使用基本回发。

感谢所有的帮助。

关于c# - 无法打开下载保存对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522590/

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