私のダウンロードシナリオは次のとおりです。jspのダウンロードリンクをクリックすると、ファイルのIDで署名されたアプレットメソッドが呼び出され、アプレットからそのIDを渡してサーバー側のメソッドが呼び出されます。サーバー側でそのファイルを取得できますが、そのファイルをアプレット関数に返す/渡したいです。私の質問は、ダウンロードしたファイルをアプレットに戻すか渡す方法ですか? または、アプレットで役立つサーバー側の応答オブジェクトにファイルを設定するにはどうすればよいですか?
私の署名付きアプレット:
private static void downloadEncryptedFile(String uuid) throws HttpException, IOException {
String uri = "http://localhost:8080/encryptFileDownload.works?uuid="+uuid;
HttpClient client = new HttpClient();
PostMethod postMethod = new PostMethod(uri);
postMethod.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");
client.executeMethod(postMethod);
postMethod.releaseConnection();
}
私のサーバー側の機能:
@RequestMapping(value = "/encryptFileDownload/{uuid}.works", method = RequestMethod.POST)
public String downloadEncryptFile(@PathVariable("uuid") String uuid, HttpSession session, HttpServletResponse response) {
try {
if (StringUtils.isNotEmpty(uuid)) {
LOG.info("-----UUID----");
Node node = contentRetrieveService.getByNodeId(uuid);
Node resource = node.getNode("jcr:content");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + node.getName() + "\"");
InputStream in = resource.getProperty("jcr:data").getBinary().getStream();
ServletOutputStream outs = response.getOutputStream();
int i = 0;
while ((i = in.read()) != -1) {
outs.write(i);
}
outs.flush();
outs.close();
in.close();
LOG.info("File Downloaded");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}