gpt4 book ai didi

c# - 在 jQuery 中下载并打开文件

转载 作者:行者123 更新时间:2023-11-30 13:04:54 25 4
gpt4 key购买 nike

我正在通过 .aspx 页面下载文件并返回一个文件

HttpContext.Current.Response.ContentType = "APPLICATION/OCTET-STREAM";
String Header = "Attachment; Filename=" + sFileName;
HttpContext.Current.Response.AppendHeader("Content-Disposition", Header);
FileInfo Dfile = new FileInfo(HttpContext.Current.Server.MapPath(sFilePath));
HttpContext.Current.Response.WriteFile(Dfile.FullName);
HttpContext.Current.Response.End();

那很好。

我希望能够使用 jQuery 通过异步 ajax 调用来执行此操作,以便在下载文件时用户看到一个 gif 微调器动画。

$("#showbusy").fadeIn();
$.ajax({ async : true, type: "GET", url: "download.aspx",
contentType: "application/text; charset=utf-8",
success: function (data) {
$("#showbusy").hide();
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
$("#showbusy").hide();
}
});

如果我直接转到 .aspx 页面,文件会下载,但由于某种原因,通过对此页面进行 ajax 调用无法正常工作。我可以看到数据正在 Firebug 中返回,但一旦完成下载,它就会留在内存中。

在收到文件下载数据后,如何在浏览器端实际触发保存文件对话框?

最佳答案

下载必须通过保存对话框启动,以便用户能够将其放在磁盘上。

如果您的方法是预取文件,然后向用户显示一个保存对话框以将文件放在他们磁盘上的某个位置,则这无法通过 javascript 实现。

但是,您可能可以通过调用通过 ajax 下载文件(您现在正在做的)来使它对用户来说看起来是即时的,在发送时提供响应缓存 header 内容,然后针对与 AJAX 调用中的 URL 完全相同的 URL 弹出下载对话框(例如通过 iframe)。这将使浏览器将文件从其缓存(在完成 AJAX 调用时创建)保存到用户的磁盘。

关于c# - 在 jQuery 中下载并打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990589/

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