package com.bbs.common.fileupload;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts2.ServletActionContext;
import com.bbs.common.core.req.ReqPro;
import com.bbs.common.core.sqlmap.DataBox;
import com.bbs.common.util.DateUtil;
import com.bbs.common.util.StringUtil;
import com.bbs.common.util.SystemGlobals;
import java.io.*;
/**
* FileDownloadUtil.java
* @Description : 파일 다운로드 클래스
* @author : 김영회
* @modify :
* @since 2008. 06. 24
* @version 1.0
*/
public class FileDownloadUtil extends HttpServlet {
/**
* 파일 다운로드
* post 방식으로 넘어옴
* @return
* @throws Exception
*/
public void fileDownload()throws ServletException, IOException
{
try{
HttpServletRequest request = ServletActionContext.getRequest();
ReqPro reqPro = new ReqPro();
DataBox box = reqPro.getBox(request);
HttpServletResponse response = ServletActionContext.getResponse();
// 박스에서 파라미터 받아오기
String korFileNm = box.getString("s_filename"); // 디비에 저장되는 한글 파일 이름
String fileName = box.getString("s_realname"); // 업로드된 숫자 파일
String basePath = box.getString("basePath"); // 업무별 저장위치 구분자
String makeDate = box.getString("s_snMakedate"); // 저장 날짜 (yyyyMM)
if(makeDate.length()>6){
makeDate = StringUtil.removeChar(makeDate, "/");
makeDate = StringUtil.removeChar(makeDate, ".");
makeDate = makeDate.substring(0,6);
}else{
makeDate = DateUtil.getNowDate("yyyyMM");
}
System.out.println("업로드된 숫자 파일이름=>"+fileName);
System.out.println("디비에 저장되어있는 한글 파일이름=>"+korFileNm);
InputStream in = null;
OutputStream os = null;
File file = null;
boolean skip = false;
String client = "";
try {
try {
//file = new File(filePath+makeDate, fileName);
file = new File(StringUtil.getSavePath(basePath)+makeDate,new String(fileName.getBytes("KSC5601"),"8859_1"));
in = new FileInputStream(file);
} catch (FileNotFoundException fe) {
skip = true; // 파일을 정상적으로 생성 못하면 true
}
response.reset();
client = request.getHeader("User-Agent");
response.setContentType("application/x-msdownload;");
response.setHeader("Content-Description", "JSP Generated Data");
if (!skip)
{
if (client.indexOf("MSIE 5.5") != -1)
{
response.setHeader("Content-Type",
"doesn/matter; charset=euc-kr");
response.setHeader("Content-Disposition", "filename="
+ new String(korFileNm.getBytes("euc-kr"), "8859_1"));
}
else
{
response.setHeader("Content-Type",
"application/octet-stream; charset=euc-kr");
response.setHeader("Content-Disposition",
"attachment; filename="
+ new String(korFileNm.getBytes("euc-kr"),
"8859_1"));
}
response.setHeader("Content-Transfer-Encoding", "binary;");
response.setHeader("Content-Length", "" + file.length());
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");
os = response.getOutputStream();
byte b[] = new byte[4096];
int leng = 0;
while ((leng = in.read(b)) > 0)
{
os.write(b, 0, leng);
}
}
else
{
System.out.print(" <SCRIPT>alert(\"File not exists!!!.\");</SCRIPT> ");
return;
}
} catch (Exception e) {
System.err.println(e.toString());
} finally {
if (in != null)
in.close();
if (os != null)
os.close();
}
}catch(Exception e){
System.err.println(e.toString());
}
}
}
'IT > JAVA' 카테고리의 다른 글
NIO 이용 파일 카피 (0) | 2013.12.21 |
---|---|
Java 로 mail 보내기 (0) | 2013.12.21 |
자바 서버 소켓 멀티 쓰레드 (0) | 2013.12.21 |
EJB (0) | 2013.12.21 |
한글이름 file 저장 (unix 에서) (0) | 2013.12.21 |