我正在尝试使用以下代码在Vaadin的新窗口中打开指向文件的链接:
getWindow().open(new ExternalResource("./uploads/file.png"), "_blank");
我将文件存储在/ uploads /下的webapp文件夹中,托管在Tomcat服务器上。但是,当我单击触发上述代码的按钮时,将打开一个新窗口,其中包含上一个窗口的内容以及指向该文件的URL,但不会触发文件下载。
如何在新窗口中打开下载链接?
答案 0 :(得分:2)
首先,你的意思是“../uploads/file.png”吗? (即Web应用程序之外的资源。)
您正在使用ExternalResource,这基本上意味着您在浏览器中打开了一个网址。 URL“./uploads/file.png”指向应用程序,您会看到相同的窗口。
相反,您可以使用FileResource让Vaadin应用程序为该文件提供服务。在这种情况下,我建议不要使用相对路径,因为它们可能因部署服务器而异。
如果要在同一Web应用程序上下文中使用Tomcat 直接提供文件,则应在web.xml中定义“./uploads”执行< strong>不映射回您的应用程序。
确保这一点的最简单方法是将Vaadin应用程序置于“/ application / *”(或类似)路径下。如果没有FileResource,这是更有效的方法。缺点是应用程序URI发生变化,用户可以看到。