假设我有一个返回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
,以便查看文件是否已完成下载。即使上层场景似乎可行,但我不知道如何实际执行监督。也许还有其他 - 更好 - 的方式来完成这项任务。
是否有可能在服务器上检测到客户端完成了文件下载并且在下载之间没有取消它?
答案 0 :(得分:2)
您可以使用Cookie。这是an example。以下是该过程中涉及的一些步骤:
window.setInterval
定期查询Cookie的存在并检查其值。在完成将文件流式传输到响应后,服务器上将cookie值设置为唯一ID。
答案 1 :(得分:-1)