背景信息
need_to_download_file2 == true
问题
一旦用户认证,我想将他们重定向到主页,然后然后为他们最初单击的文件开始文件下载。到目前为止,一切正常,但是重定向后文件下载仍未开始,用户必须再次单击下载以启动它。
主要方法:
window.open('/download/file2')
事件中调用onLoad()
。但是,网络选项卡显示请求已被取消。这就是onLoad()
事件中包含的所有内容。// onLoad
function hidePreloader () {
document.getElementById('preloader').style.display = 'none'
document.getElementById('contentDiv').style.display = 'block'
window.open('localhost:3000/download/file2','_self');
}
我将非常感谢您的帮助,如果需要,可以提供更多信息!
提前感谢。
如果我没记错的话,所有客户端上传文件必须由用户自己选择。不允许服务器自行指定要上传的文件(该服务器存在安全问题,因为服务器可能会随机将硬盘上的任何文件作为目标)。相反,用户必须手动选择要上传的文件。
您可以做的(以获得更好的用户体验)是检查用户是否似乎通过Javascript在客户端进行了身份验证。如果不是,请使用Ajax登录(不更改/丢失当前页面)。然后,在通过Ajax进行身份验证之后,仍将在当前页面中指定原始上传文件,然后可以启动该文件,而无需用户再次选择该文件。
当上传请求到达时,您的服务器仍将检查正确的身份验证,但是如果用户遵循此路径,则应该已经对其进行了身份验证。
FYI,window.open()
通常被浏览器中的弹出窗口阻止程序功能阻止,如果这不是用户单击的直接结果(即使这样,有时还是有问题的)。不依靠弹出窗口会更可靠。通常,您可以通过页面内置的弹出窗口(而不是作为单独的窗口)来模拟相同的体验。
添加触发器并触发它,它将调用相同的方法,该方法由button调用。在JQuery中实现起来很容易,但是用纯JavaScript How to trigger event in JavaScript?可能会帮到您。在node.js / express for frontend中,您可以通过npm i jquery安装jqyery模块。