一尘不染

如何使用JSP提供文件?

jsp

这听起来完全是愚蠢的,但这是现实生活中的一个例子:(

我能够显示带有“虚拟”链接名称的HTML表。

像这样:

Xyz description   <a href="docId=123">document.doc</a>

Xyz description  <a href="docId=456">documentB.doc</a>

Xyz description  <a href="docId=798">documentC.doc</a>

此文档ID表示数据库中的ID(因为这些文档以byte []的形式存储在Blob中)

无论如何。我能够获取该ID,查询数据库并检索byte [](甚至将其存储在tmp文件中)

我不知道该怎么做,是当用户单击链接时(以及在执行数据库检索之后),将byte []提供给用户。

现在最糟糕的部分是,让我问这个问题的地方是,我只需要使用JSP(不使用servlet)并且不使用第3方库来执行此操作(只是…不要问我为什么也讨厌它)

所以。如何在jsp中服务存储在服务器文件系统中的字节数组的二进制内容

我的第一位客人是:

<%
InputStream read // read the file form the fle system 
response.getOutputStream().write( theBytesReader );
%>

我接近解决方案了吗?

客户端是否真的在服务器上单击了真实文件?

提前致谢。


阅读 182

收藏
2020-06-08

共1个答案

一尘不染

到目前为止,只需在JSP中编写与在Servlet类中相同的代码即可。您几乎可以将其复制粘贴。仅确保您
不会 在流中写入任何模板文本,这包括小脚本外部的换行符和空格。否则,它也会被写入二进制文件并损坏它。

如果您有多个scriptlet块,则需要对其进行排列,以使%>scriptlet
的结束与下一个scriptlet的开始之间没有换行符<%。因此,例如

<%@page import="java.io.InputStream" %><%
    //...
%>

代替

<%@page import="java.io.InputStream" %>
<%
    //...
%>
2020-06-08