기술지원 문의

레진 사용시 자료실구현후 다운을 받을때 파일이 깨지는 문제에...
조광복 / 2003-09-26 00:00

ps 전 JSP를 공부하고 있는 학생입니다. 톰켓보다 레진이 좋은것 같아 사용하는중입니다. 제 질문이 여기 어울리는지는 모르겠지만 제 나름되로 절박한 심정으로 물어봅니다.

---------------

사용하는 레진은 
 Resin 2.1.10 (built Wed Jun 18 09:16:53 PDT 2003)
에서 사용하구 있습니다.

저는 자료실구현후 다운을 받을때 파일이 깨지는 문제에
대해서 알구 싶습니다.

일단은 다른 서버없이 레진을 서블릿,서버겸해서 사용하구 있습니다.

참고로 다음 소스들은 원래 톰켓을 기반으로 만들어진 소스입니다.

그래서 그런지 톰겟으로 돌리면 정상적인 파일다운이 잘 됩니다.

그것들을 제가 다시 레진으로 돌리는 중인데 문제가 발생하는거죠.

암튼

일단 저장을 하는 jsp를 실행하면 
 C:\\\\0000\\\\up\\\\ 
에 정상적인 파일들(실행도 되구 잘 읽힙니다)
이 들어갑니다. 그상태에서 download.jsp 라는 것을 만들어서

<%@ page contentType=\"application;\" 
%><%@ page language=\"java\" import=\"java.util.*,java.io.*,java.sql.*,java.text.*\" 
%>
<%!
public String toKor(String str){
try{
return new String(str.getBytes(\"8859_1\"),\"KSC5601\");
}catch(Exception e){
return str;
}
}%>
<% 
String filename = toKor(request.getParameter(\"file\")); 
File file = new File(\"C:\\\\0000\\\\up\\\\\"+filename); 
System.out.println((int)file.length()+\" \"+filename);
//byte b[] = new byte[(int)file.length()]; 
//byte b[] = new byte[1024*5];
byte b[] = new byte[4096];
response.setHeader(\"Content-Disposition\", \"attachment;filename=\" + java.net.URLDecoder.decode(request.getParameter(\"file\")) + \";\");
if (file.isFile()) 

BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file)); 
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream()); 
int read = 0; 
while ((read = fin.read(b)) != -1)

outs.write(b,0,read); 

outs.close(); 
fin.close(); 
}
%> 

실행을 시키면 다운은 잘 됩니다.(원래 
contentType=\"text/html;charset=euc-kr\"%> 라는 부분도 있었는데 다운시 한글명이 깨지길래 빼버렸습니다. 이유는 모르겠습니다..)

문제는 다운이 된후 파일들이 열면 내용이 깨져있고 (워드나 파워포인트등은 다 깨져서 열리지 않거나 열려도 내용물이 깨집니다)

실행파일들은 실행이 안되는 상태가 되어 버립니다.

강사님은 레진서버자체의 문제라고 하시면서 

아파치를 깔아보라구 권하셨지만

전 아파치를 안깔구 해결할 방법은 없나 해서 물어봅니다.

ps

참고적으로 제가 자주 보는 책의 자료실다운로드 부분 소스를 사용해도
(이경우는 \"text/html; charset=KSC5601\" 있어도 한글파일이름이 깨지지가 않네요... 암튼)

<%@ page contentType=\"text/html; charset=KSC5601\" %>
<%@ page language=\"java\" import=\"java.sql.*,java.util.*,javax.servlet.http.* \"%>
<%!
Connection DB_Connection() throws ClassNotFoundException, SQLException,Exception
{
  String url = \"jdbc:oracle:thin:@127.0.0.1:1521:hckb\";
  Class.forName(\"oracle.jdbc.driver.OracleDriver\");
  Connection conn=DriverManager.getConnection(url,\"scott\",\"tiger\");
  return conn;
}
%>
<%
Connection      conn = DB_Connection();
Statement       stmt = null;
ResultSet       rs = null;

Vector v_title = new Vector();
Vector v_file_name = new Vector();

String sql1 = \" select title,file_name \"+
 \" from file_upload \";

try{
     stmt = conn.createStatement();
        rs = stmt.executeQuery(sql1);
        while(rs.next()){
         v_title.addElement(rs.getString(1));
         v_file_name.addElement(rs.getString(2));
     }
     stmt.close();
        rs.close();
    }catch(SQLException e){
    }
%>



body  { font-size: 12px; font-family: 굴림; text-decoration: none; color: black }
th { font-size: 12px; font-family: 굴림; text-decoration: none; color: white }
td { font-size: 12px; font-family: 굴림; text-decoration: none; color: black }
a  { font-family: \"굴림\", \"Verdana\"; color: #000000; text-decoration: none }
   a:link { font-family:굴림; font-size:9pt; text-decoration:none;}
   a:visited { font-family:굴림; font-size:9pt; text-decoration:none;}
   a:hover { font-family:굴림; text-decoration:underline ;}













 
게시판 이름 : [자료다운받기]





제 목
파일이름





<%
for(int j=0;j %>
  
  
     <%=v_title.elementAt(j)%>
  
 
  \"><%=v_file_name.elementAt(j)%>
 
  
<%
}
%>




    
      
      
    










역시 같은 류의 문제가 발생합니다.

개인적으론 소스자체가 톰켓에 맞게 되어 있어 레진하구 뭔가 안맞는 문제같다고 생각하는 중입니다.

암튼 자료실 파일 다운문제를 해결해 주시면 고맙겠습니다.

Re:레진 사용시 자료실구현후 다운을 받을때 파일이 깨지는 문제에...
관리자 / 2003-10-01 00:00

636번으로 다시 질문을 올리셔셔
그쪽으로 답변을 올렸습니다.

--조광복 님의 글 [2003-09-26 19:55:45]
>ps 전 JSP를 공부하고 있는 학생입니다. 톰켓보다 레진이 좋은것 같아 사용하는중입니다. 제 질문이 여기 어울리는지는 모르겠지만 제 나름되로 절박한 심정으로 물어봅니다.

---------------

사용하는 레진은 
 Resin 2.1.10 (built Wed Jun 18 09:16:53 PDT 2003)
에서 사용하구 있습니다.

저는 자료실구현후 다운을 받을때 파일이 깨지는 문제에
대해서 알구 싶습니다.

일단은 다른 서버없이 레진을 서블릿,서버겸해서 사용하구 있습니다.

참고로 다음 소스들은 원래 톰켓을 기반으로 만들어진 소스입니다.

그래서 그런지 톰겟으로 돌리면 정상적인 파일다운이 잘 됩니다.

그것들을 제가 다시 레진으로 돌리는 중인데 문제가 발생하는거죠.

암튼

일단 저장을 하는 jsp를 실행하면 
 C:\\\\0000\\\\up\\\\ 
에 정상적인 파일들(실행도 되구 잘 읽힙니다)
이 들어갑니다. 그상태에서 download.jsp 라는 것을 만들어서

<%@ page contentType=\"application;\" 
%><%@ page language=\"java\" import=\"java.util.*,java.io.*,java.sql.*,java.text.*\" 
%>
<%!
public String toKor(String str){
try{
return new String(str.getBytes(\"8859_1\"),\"KSC5601\");
}catch(Exception e){
return str;
}
}%>
<% 
String filename = toKor(request.getParameter(\"file\")); 
File file = new File(\"C:\\\\0000\\\\up\\\\\"+filename); 
System.out.println((int)file.length()+\" \"+filename);
//byte b[] = new byte[(int)file.length()]; 
//byte b[] = new byte[1024*5];
byte b[] = new byte[4096];
response.setHeader(\"Content-Disposition\", \"attachment;filename=\" + java.net.URLDecoder.decode(request.getParameter(\"file\")) + \";\");
if (file.isFile()) 

BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file)); 
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream()); 
int read = 0; 
while ((read = fin.read(b)) != -1)

outs.write(b,0,read); 

outs.close(); 
fin.close(); 
}
%> 

실행을 시키면 다운은 잘 됩니다.(원래 
contentType=\"text/html;charset=euc-kr\"%> 라는 부분도 있었는데 다운시 한글명이 깨지길래 빼버렸습니다. 이유는 모르겠습니다..)

문제는 다운이 된후 파일들이 열면 내용이 깨져있고 (워드나 파워포인트등은 다 깨져서 열리지 않거나 열려도 내용물이 깨집니다)

실행파일들은 실행이 안되는 상태가 되어 버립니다.

강사님은 레진서버자체의 문제라고 하시면서 

아파치를 깔아보라구 권하셨지만

전 아파치를 안깔구 해결할 방법은 없나 해서 물어봅니다.

ps

참고적으로 제가 자주 보는 책의 자료실다운로드 부분 소스를 사용해도
(이경우는 \"text/html; charset=KSC5601\" 있어도 한글파일이름이 깨지지가 않네요... 암튼)

<%@ page contentType=\"text/html; charset=KSC5601\" %>
<%@ page language=\"java\" import=\"java.sql.*,java.util.*,javax.servlet.http.* \"%>
<%!
Connection DB_Connection() throws ClassNotFoundException, SQLException,Exception
{
  String url = \"jdbc:oracle:thin:@127.0.0.1:1521:hckb\";
  Class.forName(\"oracle.jdbc.driver.OracleDriver\");
  Connection conn=DriverManager.getConnection(url,\"scott\",\"tiger\");
  return conn;
}
%>
<%
Connection      conn = DB_Connection();
Statement       stmt = null;
ResultSet       rs = null;

Vector v_title = new Vector();
Vector v_file_name = new Vector();

String sql1 = \" select title,file_name \"+
 \" from file_upload \";

try{
     stmt = conn.createStatement();
        rs = stmt.executeQuery(sql1);
        while(rs.next()){
         v_title.addElement(rs.getString(1));
         v_file_name.addElement(rs.getString(2));
     }
     stmt.close();
        rs.close();
    }catch(SQLException e){
    }
%>



body  { font-size: 12px; font-family: 굴림; text-decoration: none; color: black }
th { font-size: 12px; font-family: 굴림; text-decoration: none; color: white }
td { font-size: 12px; font-family: 굴림; text-decoration: none; color: black }
a  { font-family: \"굴림\", \"Verdana\"; color: #000000; text-decoration: none }
   a:link { font-family:굴림; font-size:9pt; text-decoration:none;}
   a:visited { font-family:굴림; font-size:9pt; text-decoration:none;}
   a:hover { font-family:굴림; text-decoration:underline ;}













 
게시판 이름 : [자료다운받기]





제 목
파일이름





<%
for(int j=0;j %>
  
  
     <%=v_title.elementAt(j)%>
  
 
  \"><%=v_file_name.elementAt(j)%>
 
  
<%
}
%>




    
      
      
    










역시 같은 류의 문제가 발생합니다.

개인적으론 소스자체가 톰켓에 맞게 되어 있어 레진하구 뭔가 안맞는 문제같다고 생각하는 중입니다.

암튼 자료실 파일 다운문제를 해결해 주시면 고맙겠습니다.