1
내 다운로드 시나리오 : 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;
}
내가 JCR 파일 업로드 및 다운로드를 사용했으며,이 코드는 서버에서 파일을 다운로드 할 특정 그러나 중요한 것은 establ입니다이기 때문에 당신이 당신의 요구 사항으로이 코드를 활용할 수 애플릿과 서버 및 그 반대로 통신 경로를 지정합니다. – Balasaheb