1
私はそれはかなり可能だと思いますが、わかりません。私が直接サーブレットを使用する可能性を持っていないので、私は、JSPを使用するように強制してい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出力ストリームに書き込みます。
可能ですか?それは合理的に聞こえますか?すでにJSTLや他のものがそれを処理していますか?
「contentType」。 'content-type'はLiferay 6で失敗します。スタックオーバーフローでは、単一のcharの編集を提案できません。 –
'java.io.Writer'は' char [] 'を引数として' write(..) 'メソッドを持ちますが、(少なくともJava 7では)' byte [] 'のためのメソッドはありません。 –
代わりに<%@ 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(); %> – Mike