イントラネットhttpサーバーからバイナリファイルを読み取り、一般にダウンロードする必要があります。
スキーマ
イントラネットファイルサーバー(Apache)= 1 <->パブリックhttpサーバー(ApacheTomcat)=2<->インターネット許可ユーザー=3
サーバー2のファイルシステムに保存せずにこれを解放する方法
回答ありがとうございます。私はJavaを初めて使用します。
英語でごめんなさい。
この状況では、2つの方法しか考えられません。
JSPページでの使用:
<% response.sendRedirect("http://intranet_address");%>
また
<c:redirect url="http://intranet_address"/>
標準のtaglibを使用します。
サーブレットページでの使用:
response.setStatus(302);
response.setHeader("Location", "http://intranet_address"); or just
response.sendRedirect("http://intranet_address");
イントラネットで最初のアプローチを試したことはありませんが、イントラネットアドレスがインターネットユーザーにとって有効ではないという事実を考えると、うまくいくとは思いません。
今では、プロキシ層を使用するという2番目のアプローチしか残されていません。プロキシ機能はさまざまな方法で実装できます。単純なものは、サーブレットの背後にあるBeanで、ファイルサーバー1へのURLを開き、ファイルを読み取ってサーブレット応答ストリームを介してユーザーに送信する場合があります。埋め込まれたHTTPClient。
編集:バイナリファイルをダウンロードするので、JSPは良い選択ではありません。これは、テキストデータを処理するためのものです。バイナリストリームを実行するにはサーブレットが必要です。HttpServletResponseで次のように設定できます。
resp.setContentType("application/octet-stream");
resp.setContentLength(length);
resp.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"" );
そのため、コンテンツは設定した名前の添付ファイルとして送信されます。
java.net.URL(または別のhttpクライアント)を使用して1から読み取り、(3に応答して)出力します。
(Apache Http ServerまたはNginxでは、これはリバースプロキシを使用して実現できます。)