2010-11-23 12 views
0

私は実際にレスポンスにイメージのバイトを書き込むサーブレットを書いています。サーブレットにgetまたはpostというアクションを含むフォームを送信して、イメージをダウンロードできます。しかし、このサーブレットをページから離れることなくどのように要求できますか?ページを離れることなく画像をダウンロードするにはどうしたらいいですか?

私はjQuery.get("http://localhost:8080/mydownloadservlet")を試しました。リクエストはサーブレットで受信されていますが、イメージはダウンロードされていません。フォームの送信と同じことが働いています。

おかげで、 アミットパテル

答えて

3

次のように働いた。

作成済みの非表示のiframe。

<iframe src="" id="hiddenFrm" style="display:none;" frameborder="0"></iframe> 

jqueryを使用して、隠しフレームのsrcを次のように設定してイメージをダウンロードしました。

function download(url){ 
    jQuery("#hiddenFrm").attr("src",url); 
} 
0

1)あなたは正しくHTTPヘッダーを設定する必要があります。

Content-Disposition: attachment; filename=mypic.jpg 

2)あなたはjQuery.getを行い、そのページに移動する必要はありませんが、

<a href="http://localhost:8080/mydownloadservlet">Download pic</a> 

またはjavacript

window.location = 'http://localhost:8080/mydownloadservlet'; 

すべてが計画どおりに進んでいる場合は、実際にページを離れてください。

3

Content-Disposition: attachmentヘッダーをサーブレットの応答に追加します。この方法でクライアントは名前を付けて保存ダイアログを強制的にポップします。

response.setHeader("Content-Disposition: attachment; filename=image.gif"); 

応答に任意のバイトを書く前にこのを行います。このためにクライアントサイドにJavaScriptは必要ありません。サーブレットを指すリンクまたはフォーム。コンテンツの配置がinlineに設定されていないため、クライアントはページを終了しません。

は、あなたはまだしかしとしてすぐに代わり保存を実行される添付ファイルのContent-Typeに関連付けられたデフォルトのアクションがあるのか​​どうか、クライアントのデフォルトの設定に依存しています。たとえばFirefoxの場合、これはツール>オプション>アプリケーションで設定できます。これをサーバー側から制御することはできませんが、これについては心配しないでください。クライアントはそれを持っていることに決めました。

関連する問題