DownloadAction 추상클래스로서 상속시 getStreamInfo()메소드를 다운로드가 가능한 형태로 구현한다.
1. struts-config.xml : action path 추가
<action path="/download"
type="com.myhome.upload.actions.FileDownloadAction"/>
2. FileDownloadAction.java 작성
package com.myhome.upload.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
/*download*/
import org.apache.struts.actions.DownloadAction;
import java.io.File;
import com.myhome.upload.util.UploadUtil;
public class FileDownloadAction extends DownloadAction {
@Override
protected StreamInfo getStreamInfo(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
String filename = request.getParameter("clip");
File file = new File(UploadUtil.SAVE + filename);
/*한글파일일 경우 헤더타입이 다르므로 변경한다.*/
String contentType = "application/octet-stream";
response.setContentType(contentType);
/*txt, image파일들은 브라우저가 직접 결과를 전달한다.
* 다음과 같이 설정하지 않을 경우 text파일 같은 경우는 브라우져에서
* 해석이 가능함으로 브라우져에서 바로 열린다. 이것을 처리해 주면
* 무조건 다운로드 된다.
* */
response.setHeader("Content-disposition",
"attachment;filename="+
toEng(file.getName()));
response.setHeader("Content-Length", ""+file.length());
return new FileStreamInfo(contentType, file);
}
public String toKor(String data){
if(data == null)return null;
String temp = "";
try{
temp = new String(data.getBytes("ISO8859_1"),"EUC-KR");
}catch(java.io.UnsupportedEncodingException uee){}
return temp;
}
public String toEng(String data){
if(data == null)return null;
String temp = "";
try{
temp = new String(data.getBytes("MS949"),"ISO-8859-1");
}catch(java.io.UnsupportedEncodingException uee){}
return temp;
}
}
자세한 사항은 파일을 참조 한다. FileUploadDownload 다 포함.
1. struts-config.xml : action path 추가
<action path="/download"
type="com.myhome.upload.actions.FileDownloadAction"/>
2. FileDownloadAction.java 작성
package com.myhome.upload.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
/*download*/
import org.apache.struts.actions.DownloadAction;
import java.io.File;
import com.myhome.upload.util.UploadUtil;
public class FileDownloadAction extends DownloadAction {
@Override
protected StreamInfo getStreamInfo(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
String filename = request.getParameter("clip");
File file = new File(UploadUtil.SAVE + filename);
/*한글파일일 경우 헤더타입이 다르므로 변경한다.*/
String contentType = "application/octet-stream";
response.setContentType(contentType);
/*txt, image파일들은 브라우저가 직접 결과를 전달한다.
* 다음과 같이 설정하지 않을 경우 text파일 같은 경우는 브라우져에서
* 해석이 가능함으로 브라우져에서 바로 열린다. 이것을 처리해 주면
* 무조건 다운로드 된다.
* */
response.setHeader("Content-disposition",
"attachment;filename="+
toEng(file.getName()));
response.setHeader("Content-Length", ""+file.length());
return new FileStreamInfo(contentType, file);
}
public String toKor(String data){
if(data == null)return null;
String temp = "";
try{
temp = new String(data.getBytes("ISO8859_1"),"EUC-KR");
}catch(java.io.UnsupportedEncodingException uee){}
return temp;
}
public String toEng(String data){
if(data == null)return null;
String temp = "";
try{
temp = new String(data.getBytes("MS949"),"ISO-8859-1");
}catch(java.io.UnsupportedEncodingException uee){}
return temp;
}
}
자세한 사항은 파일을 참조 한다. FileUploadDownload 다 포함.
'FrameWork > Struts1' 카테고리의 다른 글
struts1 커스터마이징하여 사용하기. (0) | 2009.11.11 |
---|---|
Struts1 fileUpload (0) | 2009.08.18 |
Struts1의 Action 4 (0) | 2009.08.16 |
Struts1의 Action 3 (0) | 2009.08.16 |
Struts1의 Action 2 (0) | 2009.08.12 |
Struts1의 Action 1 (0) | 2009.07.27 |
Struts1에서 ActionForm 사용하기. (0) | 2009.07.25 |
Struts1 에서 iBatis 사용하기 (0) | 2009.07.05 |
Struts 1 을 사용하여 간단한 회원가입, 리스트 불러오기. (0) | 2009.07.05 |
Struts1 개발환경 설정. (0) | 2009.07.05 |