在浏览器的新选项卡中打开文件内容

时间:2014-08-25 17:49:46

标签: java spring servlets

我想在浏览器的新标签中显示文件内容。我所做的就是:

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
}

但这导致下载文件而不是在新标签中打开文件内容。 我无法找到我做错的事。

任何帮助都会很棒!!

3 个答案:

答案 0 :(得分:0)

实际上,您现在需要做的就是将JQuery添加到您的网页,然后使用JQUery.get。从servlet获取html后,使用jquery或javascript在选项卡中设置文本。

顺便说一下,你可能想在servlet输出流上设置其他细节,比如文件类型,长度等等。只是想一想

答案 1 :(得分:0)

您也可以尝试使用omnifaces库

Faces.sendFile(file, false);//true makes it as an attachment

有关http://omnifaces.org/docs/javadoc/1.8/org/omnifaces/util/Faces.html#sendFile(java.io.File,%20boolean)

的更多信息

答案 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(如果浏览器包含现在常见的标签)或新窗口。