0

liferay カスタム ポートレットを使用しており、その中で jasper レポートを使用しています。私の問題は、クライアント マシンに PDF レポートを直接ダウンロードする方法です。

現在、最初にサーバーにファイルを保存しています。次に、pdfをダウンロードするためのURLをユーザーに提供します。しかし、pdfファイルの出力ストリームがある場合、ファイルをクライアントマシンに直接保存するにはどうすればよいですか。

ユーザーがダウンロードリンクをクリックしたとき、およびファイルをダウンロードした後に、ダウンロードしたファイルをサーバーから削除する方法を知っている場合は、どうすればよいですか?

4

1 に答える 1

0

あなたが求めていることが可能かどうかはわかりませんが、誰かがその声明を修正するのを見ることに興味があります.

サーバーは、クライアントとサーバーの関係の意図に違反するため、クライアントマシンにファイルを直接保存するべきではありません。クライアントはファイルを要求する必要があり、クライアントはそのファイルを保存できます (たとえば、ftp ダウンロードのように)。サーバーは、適切と思われる方法でクライアント マシンを操作しません。

ファイルがいつダウンロードされたかを知る限り、それを検出するためにポートレットでできることは何もありません。ResourceRequest および serveResource メソッドを使用してファイルを提供できますが、ポートレット API では、ダウンロードが完了したことや、何かによって中断されなかったことをポートレットに通知するものは何もありません。

別の方法として、古いファイルを消去する cron ジョブを実行することもできます。この場合、ファイルを正常にダウンロードするのに必要な時間をユーザーに通知してください。

于 2012-12-21T20:58:12.890 に答える