是否有任何事件/方式我们可以知道文件何时完成下载


Is there any event/way we can know when a file has finished downloading?

这个问题已经问了很多次了,但我无法得到一个完美的答案来实现。所以我再试一次。

假设您希望在文件从服务器完全下载后显示一条消息。是的,有一些可能的方法可以上传文件,甚至在下载时显示进度条,但是是否有任何特定的实例/信息/事件应该告诉下载何时完成?

我所知道的是,它可能可以在 cookie 的帮助下实现。但是怎么做呢?

当您从服务器请求文件时,请从客户端向下载服务发送唯一密钥。

GET/Download?fileId=someId&cookieName=abc

当服务器提供完文件内容后,设置具有唯一名称的 cookie

var cookieName = Request.QueryString["cookieName"]; 
Response.Cookies.Add(new HttpCookie(cookieName , "true")
{
    Path = "/",
    HttpOnly = false
});

同时,在你的JavaScript中,监听一个带有你唯一名称的cookie,一旦设置好,做一个回调:

window.setInterval(function () {
    var cookie = $.cookie('abc');
        if (cookie !== null) {
            callback();
        }
}, 500);

您可能还想考虑在完成后删除 cookie。