gpt4 book ai didi

asp.net-mvc - 是否可以检测文件是否实际下载

转载 作者:行者123 更新时间:2023-12-03 03:58:35 25 4
gpt4 key购买 nike

假设我有一个返回 FileResult 的 Controller 操作方法。是否可以检测文件是否实际下载完全到客户端?

public ActionResult GetFile(int id)
{
DownloadInfo data = provider.GetInfo(id);
this.provider.MarkDownloadStart(id);

return File(Server.MapPath(data.Filename), "application/pdf");
}

我确实在调用操作时存储信息,但这仅意味着有人启动了下载。无论下载是否完成,它都没有向我提供有关服务器的任何信息...

我还设置了内容处置 header ,因此文件应该永远不会直接在浏览器中打开,而是浏览器要求打开/保存它。这使得客户端更容易保存文件...

我的想法

我想不可能直接检测到下载确实发生了。但是否可以通过其他方式做到这一点:

  1. 正在加载一个 View
  2. 有一个 iframe
  3. 请求文件并
  4. 主视图监督客户端上的下载,因为它可以访问iframe,因此它可以查看文件是否已完成下载。

尽管上面的场景看起来可行,但我不知道如何实际进行这种监督。。也许还有其他更好的方法来完成这项任务。

主要问题是

是否可以在服务器上检测客户端完全完成文件下载并且在下载之间不取消它?

最佳答案

您可以使用cookie。这是an example 。以下是该过程中涉及的一些步骤:

  1. 在客户端生成一些唯一的 ID。
  2. 通过传递此唯一 ID 将请求发送到下载操作。
  3. 使用 window.setInterval 定期查询 Cookie 是否存在并检查其值。
  4. 如果 Cookie 已创建且其值与唯一 ID 匹配,则下载已完成。

一旦您完成将文件流式传输到响应,就在服务器上将 cookie 值设置为唯一 ID。

关于asp.net-mvc - 是否可以检测文件是否实际下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10053326/

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