1. 프레임 워크에 무관 : 서블릿 다운로드 파일을 첨부 파일로
<!-- with JS -->
<a href="javascript:window.location='downloadServlet?param1=value1'">
download
</a>
<!-- without JS -->
<a href="downloadServlet?param1=value1" >download</a>
2. Struts2 프레임 워크 : 첨부 파일로 활동 다운로드 파일
<!-- with JS -->
<a href="javascript:window.location='downloadAction.action?param1=value1'">
download
</a>
<!-- without JS -->
<a href="downloadAction.action?param1=value1" >download</a>
<s:a>
태그로 작성된 URL 을 OGNL 로 가리키는 태그 를 사용하는 것이 좋습니다 .<s:url>
<!-- without JS, with Struts tags: THE RIGHT WAY -->
<s:url action="downloadAction.action" var="url">
<s:param name="param1">value1</s:param>
</s:ulr>
<s:a href="%{url}" >download</s:a>
위의 경우에, 당신이 필요 작성하는 내용 - 처리 받는 헤더를 응답 파일에 필요한 다운로드 (할 것을 지정 attachment
) 및 브라우저가 열리지 않습니다 ( inline
). 당신이 필요로 지정하기 위해 컨텐츠 유형을 너무, 당신은 (도움말을 실제 진행 막대 그리기 브라우저를) 파일 이름과 길이를 추가 할 수 있습니다.
예를 들어 ZIP을 다운로드 할 때 :
response.setContentType("application/zip");
response.addHeader("Content-Disposition",
"attachment; filename=\"name of my file.zip\"");
response.setHeader("Content-Length", myFile.length()); // or myByte[].length...
Struts2를 사용하면 ( 예를 들어 Action을 서블릿으로 사용 하지 않고 직접 스트리밍 을위한 핵 을 사용 하지 않는 한) 응답에 직접 아무것도 쓸 필요가 없습니다. 단순히 사용하여 스트림 결과 유형을 작동하고 struts.xml에서 그것을 구성 : 예를
<result name="success" type="stream">
<param name="contentType">application/zip</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="contentLength">${fileLength}</param>
</result>
3. 프레임 워크에 구애받지 않음 (/ Struts2 프레임 워크) : 브라우저 내에서 파일을 여는 서블릿 (/ Action)
파일을 다운로드하는 대신 브라우저 내에서 파일을 열려면 Content-disposition 을 inline 으로 설정해야 하지만 대상은 현재 창 위치가 될 수 없습니다. 자바 스크립트로 작성된 새 창 <iframe>
, 페이지에서 또는 "토론 된"target = "_ blank"를 사용하여 즉석에서 만든 새 창을 타겟팅해야합니다 .
<!-- From a parent page into an IFrame without javascript -->
<a href="downloadServlet?param1=value1" target="iFrameName">
download
</a>
<!-- In a new window without javascript -->
<a href="downloadServlet?param1=value1" target="_blank">
download
</a>
<!-- In a new window with javascript -->
<a href="javascript:window.open('downloadServlet?param1=value1');" >
download
</a>