--------------------------- 파일 불러올 페이지 상단 선언
String sql ="select attachno, saveFileNm, orifilenm from g_attachedFile where letterNo=?";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,letterNo);
rs = pstmt.executeQuery();
// DB 불러오는 예 .
StringBuffer fileInfo = new StringBuffer();
String fileTag = "<div><a href='./fileDown/fileDown.jsp?filename=%s'>%s</a></div>";
while(rs.next()){
fileInfo.append(String.format(fileTag, java.net.URLEncoder.encode(rs.getString("saveFileNm"),"EUC-KR"),rs.getString("orifilenm")));
}
rs.close();
pstmt.close();
<script type ="text/javascript">
$(function(){
var fileInfo = "<%=fileInfo != null ? fileInfo.toString() : "" %>";
if(fileInfo != ""){
$(".file").append(fileInfo);
}
document.all("menuTitle").innerHTML="<%=bbsGubunName%>";
});
<script>
<td class="file"></td>
// 위에 선언한 스트링버퍼에 있는 문자열값을 자바스크립트로 배치
-------------------------------------- 파일 다운로드 , fileDown.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%
request.setCharacterEncoding("UTF-8");
//
String saveFolder = request.getRealPath("/") + "upload/partnerfile";
// 나중에 지워야함.
// 파일 업로드된 경로
String savePath = saveFolder;
// 서버에 실제 저장된 파일명
String filename = request.getParameter("filename") ;
if(filename==null) filename="";
// 실제 내보낼 파일명
String orgfilename = request.getParameter("filename") ;
if(orgfilename==null) orgfilename="";
orgfilename = new String(orgfilename.getBytes("8859_1"),"KSC5601");
InputStream in = null;
OutputStream os = null;
File file = null;
boolean skip = false;
String client = "";
try{
out.clear();
// 파일을 읽어 스트림에 담기
try{
try{
file = new File(savePath, orgfilename);
} catch (Exception e11){
}
in = new FileInputStream(file);
}catch(FileNotFoundException fe){
skip = true;
} catch (Exception e1){
}
client = request.getHeader("User-Agent");
// 파일 다운로드 헤더 지정
response.reset() ;
response.setContentType("application/octet-stream");
response.setHeader("Content-Description", "JSP Generated Data");
if(!skip){
orgfilename = new String(orgfilename.getBytes("euc-kr"),"8859_1");
// IE
if(client.indexOf("MSIE") != -1){
response.setHeader ("Content-Disposition", "attachment; filename=" + orgfilename);
}else{
// 한글 파일명 처리
response.setHeader("Content-Disposition", "attachment; filename=\"" + orgfilename + "\"");
response.setHeader("Content-Type", "application/octet-stream; charset=utf-8");
}
response.setHeader ("Content-Length", ""+file.length() );
out.clear();
out = pageContext.pushBody();
os = response.getOutputStream();
byte b[] = new byte[(int)file.length()];
int leng = 0;
response.flushBuffer();
while( (leng = in.read(b)) > 0 ){
os.write(b,0,leng);
}
}else{
response.setContentType("text/html;charset=UTF-8");
out.println("<script language='javascript'>alert('파일을 찾을 수 없습니다"+orgfilename+"');history.back();</script>");
}
in.close();
os.flush();
os.close();
}catch(Exception e){
e.printStackTrace();
}
%>
<%@include file ="../../include/dbClose.jsp" %>
--------------------------------------------- 내가 조정한것
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%
request.setCharacterEncoding("UTF-8");
//
String saveFolder = request.getSession().getServletContext().getRealPath("/")+ "upload/partnerfile";
System.out.println(saveFolder);
// 나중에 지워야함.
// 파일 업로드된 경로
String savePath = saveFolder;
// 서버에 실제 저장된 파일명
String filename = request.getParameter("filename") ;
if(filename==null) filename="";
filename = new String(filename.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(filename);
// 실제 내보낼 파일명
String orgfilename = request.getParameter("orifilename") ;
if(orgfilename==null) orgfilename="";
System.out.println(new String(orgfilename.getBytes("ISO-8859-1"), "UTF-8")+" sss1");
// 이부분의 차이가 중요하다. 주석풀고 안풀고 해보자
//orgfilename = new String(orgfilename.getBytes("ISO-8859-1"), "UTF-8");
InputStream in = null;
OutputStream os = null;
File file = null;
boolean skip = false;
String client = "";
try{
out.clear();
// 파일을 읽어 스트림에 담기
try{
try{
file = new File(savePath, filename);
} catch (Exception e11){
}
in = new FileInputStream(file);
}catch(FileNotFoundException fe){
skip = true;
} catch (Exception e1){
}
client = request.getHeader("User-Agent");
// 파일 다운로드 헤더 지정
response.reset() ;
response.setContentType("application/octet-stream");
response.setHeader("Content-Description", "JSP Generated Data");
if(!skip){
if(client.indexOf("MSIE") != -1){
response.setHeader ("Content-Disposition", "attachment; filename="+ orgfilename + ";" );
System.out.println(orgfilename+" sss");
}else{
// 한글 파일명 처리 실서버!! 에서는 아래줄 주석처리 .. 왜그런지는 모르겠음.
System.out.println(orgfilename+" sss2");
response.setHeader("Content-Disposition", "attachment; filename=\"" + orgfilename + "\"");
response.setHeader("Content-Type", "application/octet-stream; charset=utf-8");
}
response.setHeader ("Content-Length", ""+file.length() );
out.clear();
out = pageContext.pushBody();
os = response.getOutputStream();
byte b[] = new byte[(int)file.length()];
int leng = 0;
response.flushBuffer();
while( (leng = in.read(b)) > 0 ){
os.write(b,0,leng);
}
}else{
response.setContentType("text/html;charset=UTF-8");
out.println("<script language='javascript'>alert('파일을 찾을 수 없습니다"+filename+"');history.back();</script>");
}
in.close();
os.flush();
os.close();
}catch(Exception e){
e.printStackTrace();
}
%>
'Web > JSP_SERVLET' 카테고리의 다른 글
첨부파일 삭제 소스 (0) | 2016.03.11 |
---|---|
셀렉트박스 db 값, 선택 (0) | 2016.03.11 |
[JSP] checkbox 값 받기와 전송순서에 대하여 (0) | 2016.03.09 |
execute / executeQuery / executeUpdate 차이 (0) | 2016.02.26 |
리다이렉트 방식의 종류. (0) | 2016.02.26 |
댓글