假设我有一个返回的控制器操作方法FileResult
。是否可以检测文件是否实际完全下载到客户端?
public ActionResult GetFile(int id)
{
DownloadInfo data = provider.GetInfo(id);
this.provider.MarkDownloadStart(id);
return File(Server.MapPath(data.Filename), "application/pdf");
}
我确实在调用操作时存储信息,但这仅意味着有人启动了下载。它没有给我任何关于服务器是否下载完成的信息......
我还设置了内容处置标头,因此文件应该永远不会直接在浏览器中打开,而是浏览器要求打开/保存它。这使客户端更容易保存文件...
我的想法
我想不可能直接检测到下载确实发生了。但是是否可以通过某种其他方式来做到这一点:
- 加载一个视图
- 有
iframe
一个 - 请求文件和
- 主视图监督客户端上的下载,因为它可以访问,
iframe
因此它可以查看文件是否已完成下载。
尽管上面的场景看起来可行,但我不知道如何实际进行监督。也许还有其他更好的方法来完成这项任务。
主要问题是
是否可以在服务器上检测到客户端完全完成文件下载并且在下载之间没有取消它?