我在Tomcat webapp文件夹中有一些二进制文件,我希望用户下载。
我有以下代码:Window.open(GWT.getHostPageBaseURL()+result, "_blank", "");
我检查了GWT.log路径,这是正确的 - 它确实指向具有特定文件的文件夹。
Firefox:按预期下载每个文件(在新标签页中打开图片/ xml或提示保存对话框)
Chrome:似乎只是从我尝试过的.zip下载。其他人被忽略,没有任何反应。
IE8:在新的IE窗口中打开图像/ XML。其他被忽略(例如ZIP闪烁新窗口,但不会提示保存对话框)
我做错了什么?感谢
答案 0 :(得分:4)
我建议使用Fiddler之类的工具通过更详细地检查HTTP请求和响应来诊断此问题。
我的预感是它会成为一个哑剧型的问题,但如果没有看到更多正在发生的事情,很难说肯定。
答案 1 :(得分:2)
我最近为我们的组织构建了一些东西,作为与IE一起使用的缓存破坏者而不是其他任何东西。
如果您可以检查输出脚本中是否包含以下内容,至少在某处: -
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=0");
response.setHeader("Content-Disposition", "attachment; filename=\"" + yourfilenamehere + "\"");
希望这对你有所帮助。内容处理似乎是剥离IE公平的东西,但是当从磁盘中提取文件时,缓存的只是我的意见。
祝你好运!
答案 2 :(得分:2)
根据GWT-group的this discussion问题,chrome可能会阻止javascript(或GWT中的回调)生成的弹出窗口,但如果是用户交互的结果(或按钮点击,则允许打开新窗口) GWT)。
答案 3 :(得分:0)
两天前用IIS遇到了一个非常类似的案例。根本原因是IE设置,其中禁用了自动提示下载文件。 (Firefox运行良好)
虽然这是IE的解决方案,但我还没有找到一个好的永久解决方案。我知道这是可能的,因为我们有一个Tomcat应用程序,IE没有这个问题。
答案 4 :(得分:0)
服务器是否正在运行SSL?
IE在下载内容方面有一些奇怪的限制,它将内容传递给第三方应用程序(zip,pdf,doc,xls等)。我们已经在我们的响应中使用了排除特定no-cache标头的组合,并在IE中取消选中“不要将加密的页面保存到磁盘”。微软认为这是一个“功能”。以下是一些讨论该问题的相关链接:
stackoverflow:1262147
Windows Live:Blog
Atlassian:Jira issue