我们的网站最近在Play框架中重写。我们向用户提供文件下载,并使用renderBinary()正确下载文件。
现在,当二进制文件在后台下载时,我想向用户显示/呈现新的html页面。有点像这样:
[亲爱的网站用户:点击此处下载此文件:bigfile.zip]
用户点击后,bigfile.zip开始下载。然后我想向用户显示一个新页面:
[亲爱的网站用户:感谢您下载bigfile。这是一些额外的信息。]
对renderBinary()的调用永远不会返回,因此我之后无法调用Application.showMyPage()之类的东西。同样,渲染我的html页面[Application.showMyPage()]的调用也从不返回,所以我不能在之后调用renderBinary()。
也许javascript onclick是唯一的方法,但我很想知道在Play中是否有一种干净的方法。
答案 0 :(得分:0)
您要求的是您的客户端同时执行两个请求,而不是HTTP的工作方式。最简单的方法,以及我看到下载网站的工作方式如下
renderBinary
方法调用您的操作,显示感谢页面,其中包含一段javascript以自动开始下载文件。这是人们普遍期待的用户体验。
答案 1 :(得分:0)
当我们在后台上传文件时,我们有一个小的“隐藏”iframe,其中包含用户选择文件并点击“上传”的表单。然后文件在后台加载 - 或者更确切地说是在iframe内部。当上传完成时,服务器返回一些javascript,它在父窗口中调用js函数作为主窗口。当调用此主窗口函数时,主窗口可以将其自身重定向到新的完成页面。希望它有所帮助