質問

私はそれはかなり可能だと思うが、私はよく分かりません。

私は(長い歴史、短い時間、あなたが聞きたくない)直接サーブレットを使用する可能性を持っていないので、私は、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;
}

%>

コードにあまりにも多くの注目を入れないでください。それだけの考えを示しています。これは、JSPの出力ストリームにbynary配列を書き込みます。

それは可能ですか?それが合理的に聞こえるのか?既にそのを扱うJSTLまたは他の事はありますか?

役に立ちましたか?

解決

はい、汎用的なバイナリデータのための "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();
%>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top