代码之家  ›  专栏  ›  技术社区  ›  Chepech

用Java实现二进制文件的访问控制

  •  1
  • Chepech  · 技术社区  · 14 年前

    情况如下:

    我们就是这样解决的:

    1. 我们从远程服务器获取文件,将其存储在非公共位置。
    2. 我们将文件读入字节数组,然后删除文件。
    3. 我们使用响应的outputStream通过JSP编写文件(我们不能通过servlet刷新它,因为我们使用的是一个专有的MVC,我们不能修改它,所以所有的输出都是jsp,所以我们得到一个java.lang.IllegalStateException 但它是有效的)。

    我敢肯定有更优雅的方法。

    有什么想法吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   BalusC    14 年前

    InputStream 从别的地方来的,对吧?写下来就行了 立即 OutputStream

    然后 IllegalStateException 你只需要确保 没有空格 外面 小脚本 ,包括 新行 response.getWriter() ,但这不可能,因为你已经打过电话了 response.getOutputStream() 为了文件。把外面的东西都搬走 <% %> 在JSP中。如有必要,将多个scriptlet粘在一起。别忘了删除文件底部的最后一行换行符。

    <%@ page import="java.io.*" %>
    <% ... %>
    <% ... %>
    <% ... %>
     
    

    <%@ page import="java.io.*" %><%
       ...
       ...
       ... %>
    

        2
  •  0
  •   Romain Hippeau    14 年前

    跳过步骤2,直接将文件读入响应的输出流。
    为每个文件指定一个UUID作为名称,这样就不会与文件名发生冲突。让一个守护进程去清理任何超过15分钟的文件。

        3
  •  0
  •   emory    14 年前