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

是否可以从JSP下载二进制文件?

  •  1
  • OscarRyz  · 技术社区  · 16 年前

    我认为这很可能,但我不确定。

    我不可能直接使用servlet,所以我不得不使用jsp(历史悠久,时间短,你不想听)

    因此,我认为如下所述可以做到:

    // PSEUDO-CODE:
    // source.jsp
    Download your file
    <a href="file.jsp?xyz">MyDocument.doc</a>
    
    
    // file.jsp
    <%@page content-type="applicaton/somethig-binary-xyz"%>
    byte[] data = getBinaryFromSomeWhere();
    
    int start = 0;
    int end = data.length < 1024 ? data.length : 1024;
    int written = 0;
    while( written < data.length ) {
        out.write( data, start, end );
        writtern += end;
        start = end;
        end += written + data.length < 1024 ? data.length : 1024;
    }
    
    %>
    

    不要太关注代码。它只显示了这个想法。它将bynary数组写入JSP输出流。

    有可能吗?听起来合理吗?是否有JSTL或其他已经处理的东西?

    1 回复  |  直到 10 年前
        1
  •  2
  •   Mike    10 年前

    是的,对通用二进制数据使用“application/octet-stream”。并删除导入标记和脚本周围的每个换行符/空白。

    <%@ page contentType="applicaton/octet-stream" %><%
    byte[] data = getBinaryFromSomeWhere(request.getParameter("xyz"));
    response.setHeader("Content-length", Integer.toString(data.length));
    response.setHeader("Content-Disposition", "attachment; filename=xyz.bin");
    response.getOutputStream().write(data, 0, data.length);
    response.getOutputStream().flush();
    %>
    
    推荐文章