Struts2 파일 다운로드
다운로드는 다운받고자 하는 파일을 클릭하면 어떤 페이지로의 이동하는 것이 아니라 요청된 파일을 다운로드 할 수 있도록 스트림값을 설정해야한다.
예) 스트림 리절트
<result name="success" type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">imagesStream</param>
<param name="contentDisposition">attachment;filename="image.jpg"</param>
<param name="bufferSize">1024</param>
</result>
설명:
contentType - 스트림의 타입을 정의한다(기본값 = text/plain)
contentLength - 스트림의 바이트 크기를 정의한다. 이 값이 정의되면 브라우저에 프로그레스 바가 보이게 된다.
contentDisposition - 다운로드 받을 파일의 이름을 정의한다.
inputName - 스트림의 데이터를 정의한다(기본값 = inputStream)
bufferSize - 버퍼의 크기를 정의한다 (기본값 = 1024)
1) struts.xml
<action name ="fileDownloadAction" class="file.fileDownloadAction">
<result name="success" type="stream">
<param name="contentType">binary/octet-stream</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">${contentDisposition}</param>
<param name="contentLength">${contentLength}</param>
<param name="bufferSize">4096</param>
</result>
</action>
2) fileDownloadAction.java
public class fileDownloadAction extends ActionSupport {
private InputStream is;
private String ContentDisposition;
private long ContentLength;
private String fileDownloadPath = "D:\\uploadedFile\\";
private String fileDownloadName = "testCode.txt";
//setter, getter 생략...
public String execute() throws Exception {
File fileInfo = new File(fileDownloadPath + fileDownloadName);
setContentLength(fileInfo.length());
setContentDispositon("attachment;filename="+URLEncoder.encode(fileDownloadName, "UTF-8"));
setInputStream(new FileInputStream(fileDownloadPath + fileDownloadName));
return SUCCESS;
}
3) jsp
<s:url id="download" action="fileDownloadAction" />
<s:a href="%{download}"><s:property value='fileDownloadName" /></s:a>
'JAVA > Struts2' 카테고리의 다른 글
Struts2 파일 업로드 (0) | 2016.03.16 |
---|---|
Struts2 + Spring + iBatis 연동 및 설정하기 (0) | 2016.03.03 |