在Vaadin中打开文件链接

时间:2012-09-12 07:57:15

标签: java tomcat hyperlink vaadin

我正在尝试使用以下代码在Vaadin的新窗口中打开指向文件的链接:

getWindow().open(new ExternalResource("./uploads/file.png"), "_blank");

我将文件存储在/ uploads /下的webapp文件夹中,托管在Tomcat服务器上。但是,当我单击触发上述代码的按钮时,将打开一个新窗口,其中包含上一个窗口的内容以及指向该文件的URL,但不会触发文件下载。

如何在新窗口中打开下载链接?

1 个答案:

答案 0 :(得分:2)

首先,你的意思是“../uploads/file.png”吗? (即Web应用程序之外的资源。)

您正在使用ExternalResource,这基本上意味着您在浏览器中打开了一个网址。 URL“./uploads/file.png”指向应用程序,您会看到相同的窗口。

相反,您可以使用FileResource让Vaadin应用程序为该文件提供服务。在这种情况下,我建议不要使用相对路径,因为它们可能因部署服务器而异。

如果要在同一Web应用程序上下文中使用Tomcat 直接提供文件,则应在web.xml中定义“./uploads”执行< strong>不映射回您的应用程序。

确保这一点的最简单方法是将Vaadin应用程序置于“/ application / *”(或类似)路径下。如果没有FileResource,这是更有效的方法。缺点是应用程序URI发生变化,用户可以看到。