gpt4 book ai didi

c# - 如何使用 ashx 处理程序识别下载是否完成

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:12 25 4
gpt4 key购买 nike

在我们的一个项目中,我们需要将文件从服务器下载到客户端位置的功能。

为此,我们使用 ashx 处理程序来执行操作。它运行完美,我们可以下载文件。

现在我们需要一个需求,比如我们需要在下载开始和完成时更新一个字段。有什么办法可以做到这一点。

单击下载链接后,将出现“另存为”对话框,之后我认为我们无法控制进度。我认为我们甚至不知道点击了哪个按钮,即我们不知道用户点击的是"is"还是“否”。

任何人都可以建议一种方法来知道下载何时开始以及何时完成?我们使用的是 Asp.Net 2.0 和 c#。

下面给出了用于下载的处理器

               string fileUrl = string.Empty;

if (context.Request["fileUrl"] != null)
{
fileUrl = context.Request["fileUrl"].ToString();
}
string filename = System.IO.Path.GetFileName(fileUrl);

context.Response.ClearContent();
context.Response.ContentType = "application/exe";
context.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", filename));
context.Response.TransmitFile(fileUrl);
context.Response.Flush();

文件是从aspx页面方法下载的

private void DownloadExe()
{
string downloadUrl = "Test.exe");
Response.Redirect("Test.ashx?fileUrl=" + downloadUrl, false);
}

最佳答案

您的 ASHX 处理程序知道下载是否开始(因为它实际上被调用)以及下载何时完成(到达处理程序末尾)。如果您以 block 的形式手动编写响应,您甚至可能会在服务器端取得一些进展,这样您还可以检测到用户取消下载的某些情况(如果写入响应流在某个时候失败)。

根据您的需要,您可以将此信息传输到其他页面(即通过 session 状态)或简单地存储在某些数据库中。

关于c# - 如何使用 ashx 处理程序识别下载是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287551/

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