1

我正在尝试跟踪文件被下载的次数,以及谁下载了它。由于无法从“文件另存为”对话框中获取任何点击事件,我想知道处理程序是否真的可以知道下载是否被取消或用户选择下载它?

此链接ASP.NET 文件下载 - 检测用户是否取消下载?建议使用另一个确认对话框来完成工作,但我认为这可能不是一种用户友好的方法。

我不排除错误单击下载按钮的可能性,所以我只想知道是否真的有某种方法可以知道何时增加下载次数。

更新:

在做了一些阅读之后,我现在有了这段代码。

    int maxCount = (int)Math.Ceiling((file.Length - startBytes + 0.0) / 1024);

    int i;
    for (i = 0; i < maxCount && context.Response.IsClientConnected; i++)
    {
        context.Response.BinaryWrite(_BinaryReader.ReadBytes(1024));
        context.Response.Flush();
    }

    if (i < maxCount)
    { }
    else
    {
        //Update Increment
    }

我仍在尝试通知取消事件,这样如果用户没有真正下载它,我就不会更新增量。但我注意到,尽管按下取消,增量仍在更新。此次下载所涉及的文件很小,大约 100kb 或更多。

在我看来,for 循环已经完成,beforeResponse.IsClientConnected变为 false。我可以改变什么来完成这项工作?任何指针将不胜感激。

4

1 回答 1

2

IsClientConnected发送整个响应后检查属性。如果客户端同时取消或断开连接,它会告诉你。

重要的是在调用响应流之前检查此属性End,否则无论如何都会关闭连接。

所以基本上它归结为:

  • 发送您的数据
  • 验证客户端是否仍然连接
  • 关闭连接

或者,即使在定期将数据交付给客户端时,您也可能希望检查此值。

有关详细信息,请参阅MSDN

于 2013-03-04T05:40:26.727 回答