我有一个用Angularjs编写的上传视图。我希望确保在上传过程中页面重新加载或关闭;应删除上载到服务器的所有文件以保持一致性。所以我尝试的是:
// this function is under /upload view, and inside UploadController
window.onunload = function () {
$http.delete(...call delete on my server..);
};
但是,DELETE没有到达服务器,我错过了什么?
答案 0 :(得分:0)
我之前也遇到过这个问题。打开浏览器控制台并转到网络选项卡。现在离开页面。您将很快看到您的ajax请求被标记为(canceled)
,因为浏览器会在您离开时取消请求。
我在谷歌浏览器中观察到这种行为并且没有检查过其他浏览器,但是如果它在一个最流行的浏览器中无法可靠地工作,那么你知道这不是一个可靠的整体解决方案。
基本上,没有可靠的方法来做到这一点。我发现在window.onbeforeunload
中甚至没有做ajax调用是可靠的。
如果我是你,我会在你上传的文件上设置一个到期日期,并有一个cron作业,在到期日期后删除它们。即使window.onunload
有效,它仍然不是一个可靠的解决方案 - 例如,当用户的机器意外关闭时。