我想在浏览器的新标签中显示文件内容。我所做的就是:
int BUFF_SIZE = 102400;
FileInputStream is = null;
byte[] buffer = new byte[BUFF_SIZE];
int a = -1;
try
{
is = new FileInputStream(file);
ByteArrayOutputStream out = new ByteArrayOutputStream();
while((a = is.read(buffer)) != -1)
{
out.write(buffer);
}
out.flush();
out.close();
ServletOutputStream os = null;
os = response.getOutputStream();
os.write(out.toByteArray());
os.close();
is.close();
}
catch(Exception e)
{
// Exception handling
}
但这导致下载文件而不是在新标签中打开文件内容。 我无法找到我做错的事。
任何帮助都会很棒!!
答案 0 :(得分:0)
实际上,您现在需要做的就是将JQuery添加到您的网页,然后使用JQUery.get。从servlet获取html后,使用jquery或javascript在选项卡中设置文本。
顺便说一下,你可能想在servlet输出流上设置其他细节,比如文件类型,长度等等。只是想一想答案 1 :(得分:0)
您也可以尝试使用omnifaces库
Faces.sendFile(file, false);//true makes it as an attachment
的更多信息
答案 2 :(得分:0)
Web应用程序可能甚至不知道什么是浏览器。它通过HTTP协议接收请求,并通过相同的协议发送响应。 itsels的协议对浏览器和标签一无所知。
对于浏览器级别发生的任何事情,您必须使用javascript。其他答案建议你使用jQuery。它是一个众所周知的javascript库,它隐藏了浏览器之间的差异,但还有其他的(dojo,extJs,...):Google并做出选择。
顺便说一句,如果您想要的只是在新标签页中打开一个URL,那么这是您可以在HTML级别执行的极少数操作之一。看看这个例子 来自W3Schools.com:
<a href="http://www.w3schools.com/" target="_blank">Visit W3Schools!</a>
在新标签页中打开www.w3schools.com
(如果浏览器包含现在常见的标签)或新窗口。