본문 바로가기

JAVA/Struts2

Struts2 파일 다운로드

반응형

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