ここでは非常に単純化された解決策があります。アイデアは単純なGETではなくフォームの投稿を行うことです。
<head>
<script type="text/javascript">
function openFile(fileName) {
document.getElementById('filename').value = fileName;
document.getElementById('viewform').submit();
}
</script>
</head>
<body>
<a id="view" class="btn btn-info btn-xs" href="javascript:openFile('<%=rs.getString(2)%>');">click me</a>
<form id="viewform" action="Attached-Proof" target="_blank" method="post">
<input type="hidden" name="filename" id="filename" value=""/>
</form>
</body>
普通の古い形式の投稿でも、ファイルのパスが表示されます。これを防ぐために、サーバー側で、ファイルを読み込んで応答に書き戻すリソースを定義します。単純なサーブレットがその仕事をすることができます。
のweb.xml:
<servlet>
<servlet-name>view-file</servlet-name>
<servlet-class>com.example.ViewFileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>view-file</servlet-name>
<url-pattern>/Attached-Proof</url-pattern>
</servlet-mapping>
そして、サーブレットはこのようなものになります。
package com.example;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ViewFileServlet extends HttpServlet
{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("application/pdf");
File file = new File(getServletContext().getRealPath(request.getParameter("filename")));
InputStream is = null;
try {
is = new FileInputStream(file);
byte[] buffer = new byte[1024];
int count;
while ((count = is.read(buffer)) > 0)
{
response.getOutputStream().write(buffer, 0, count);
}
} finally {
if (is != null) is.close();
}
}
}
出典
2015-12-23 15:32:20
Tap
をあなたがそれを行う場合でも、「セキュリティ」のようなものがあってはなりません。 – Tiny
window.open( '/ pageaddress.html'、 'winname'、 'ディレクトリ=いいえ、タイトルバー=いいえ、ツールバー=いいえ、位置=いいえ、メニューバー=いいえ、スクロールバー=いいえ、サイズ変更可能=いいえ、幅= 400、高さ= 350 ')。あなたはjavascriptを使ってあなたのページを開き、上記のコードを使用することができます – usman
'window.open'イベントはブラウザ間でアドレスを隠すことはありません。私は、内容を表示するために何らかのライトボックスを使用する方がよいと思います。 http://stackoverflow.com/questions/16603308/hiding-address-bar-in-all-browsers#answer-16603781 –