note

struts2 업로드파일 다운로드 하기 본문

JSP/Struts2

struts2 업로드파일 다운로드 하기

투한 2012. 2. 23. 09:57

연관부분은

업로드 되어진 폴더를 이전 게시물에 사용한 업로드 폴더를 사용하였습니다






get방식으로 파일 위치를 직접 입력해서 넘겨줍니다






struts-ch6.xml
<!-- 다운로드 -->
		<action name="download" class="com.ch6.action.DownloadAction">
			<interceptor-ref name="exception" />
			<interceptor-ref name="staticParams" />
			<interceptor-ref name="params" />
			<param name="downloadDir">업로드 되어 있는 폴더 위치</param>
			<result name="success" type="stream">
				<param name="inputName">inputStream</param>
				<param name="contentDisposition">filename="${file}"</param>
				<param name="bufferSize">102400</param>
			</result>
			<result name="error">fileNotFound.jsp</result>
			<exception-mapping result="error" exception="java.io.fileNotFoundException" />
		</action>


DownloadAction.java
package com.ch6.action;

import java.io.FileInputStream;
import java.io.InputStream;

import javax.servlet.http.HttpServletResponse;

import com.opensymphony.xwork2.Action;

public class DownloadAction implements Action{

	//다운로드 디렉터리
	String downloadDir;
	//다운로드 파일명
	String file;
	//HttpServletResponse로 직접쓸 InputStream
	//다운로드할 파일을 연결한다
	InputStream inputStream;
	
	@Override
	public String execute() throws Exception {
		inputStream = new FileInputStream(downloadDir+"/"+file);
		return SUCCESS;
	}
	
	

	//setters
	public void setDownloadDir(String downloadDir) {
		this.downloadDir = downloadDir;
	}

	public void setFile(String file) {
		this.file = file;
	}
	//getter
	public InputStream getInputStream() {
		return inputStream;
	}
	public String getFile() {
		return file;
	}
	
	
}



fileNotFound.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>파일을 찾을 수 없습니다.</title>
</head>
<body>
<h1>파일이 존재하지 않습니다.${file}</h1>
</body>
</html>


Stream을 형성해서 넘기기 때문에 화면에 display가 될수 있습니다
txt파일 jpg 파일 등등
화면에 display가 되지 않는 파일들은 다운로드 창이 띄워집니다

xml

staticParams - > 설정정보에 명시한 정보를 제공(action에 제공) downloadDir에 액션을 주입
params -> 전송된 데이터 처리 

action에서 만들어진 객체를 type="stream"  

contentDisposition -> 파일명 get방식으로 넘겼던 파일명을 el로 받아 처리

 
DownloadAction.java