0

次のコードを使用して、Vaadin の新しいウィンドウでファイルへのリンクを開こうとしています。

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

Tomcat サーバーでホストされている /uploads/ の下の webapp フォルダーにファイルを保存しています。しかし、上記のコードをトリガーするボタンをクリックすると、前のウィンドウのコンテンツとファイルを指す URL を含む新しいウィンドウが開きますが、ファイルのダウンロードはトリガーされません。

ダウンロード用のリンクを新しいウィンドウで開くにはどうすればよいですか?

4

1 に答える 1

2

まず、単に「../uploads/file.png」という意味ですか?(つまり、Webアプリケーション外のリソース。)

あなたはExternalResourceを使用しています。これは基本的にブラウザでURLを開いていることを意味します。URL "./uploads/file.png"はアプリケーションを指し示しており、同じウィンドウが表示されます。

代わりに、FileResourceを使用して、Vaadinアプリケーションにファイルを提供させることができます。この場合、相対パスはデプロイメントサーバーによって異なる可能性があるため、使用しないことをお勧めします。

同じWebアプリケーションコンテキストでTomcatを使用してファイルを直接提供する場合は、「。/uploads」がアプリケーションにマップされないようにweb.xmlで定義する必要があります。

これを確実にする最も簡単な方法は、Vaadinアプリケーションを「/ application / *」(または同様の)パスの下に置くことです。途中にFileResourceがない場合、これはより効率的なアプローチです。欠点は、アプリケーションのURIが変更され、ユーザーに表示されることです。

于 2012-09-12T09:02:33.943 に答える