기술지원 문의

ServletOutputStream 을 이용한 다운로드시 화일깨짐현상
박창민 / 2003-01-15 00:00

os:win2000 server
resin : 2.1.6
apache : 2x

웹루트디렉토리와는 별도로 업로드 디렉토리를 만들고
다운로드시에 File을 이용해서 읽어와서
if (file.isFile())
{
FileInputStream fin = null;

fin = new FileInputStream(file);

ServletOutputStream outputStream = response.getOutputStream();

int read = 0;

while ((read = fin.read(b)) != -1)
{
outputStream.write(b, 0, read);
}

outputStream.close();

fin.close();
}

이런 형태로 화일을 다운로드 받게 합니다.
그런데 원본화일은 멀쩡한데도 불구하고 다운로드 받은 화일은 깨져 있습니다. 
전에 tomcat 같은 환경에서도 무난히 잘 되던건데 이상하네요..
resin 에서의 설정 문제 인가요?
이거 땜에 무지 고생하고 있습니다. 제발  빠른 답변 부탁합니다.
전에도 resin 에서 이러한 문제가 있어서 별도도 다른 서버를 돌린적이 있는데 운영체제나 버젼문제는 아닌거 같습니다.리눅스에서도 안되었거든요.
참고적으로 화일을 못찾는 문제는 아닙니다. 다 깨지는 건 아니고 
doc 같은 문서화일이 깨집니다. 내용이 깨지는 걸로 봐서는 character 문제인거 같기도 하고 그거땜에 헤더가 깨지는 거 같기도 한데 zip 같은건 또 안깨지는거 같더라구요.

Re:ServletOutputStream 을 이용한 다운로드시 화일깨짐현상
관리자 / 2003-01-16 00:00

response로 출력하기전에 필요한 헤더를 설정하셨나요?

예를 들면
response.setContentType(\"application/octet-stream\")
response.setContentLength(파일사이즈)
response.setHeader(\"Content-Disposition\", \"filename=\" + 파일이름 + \";\")
response.setHeader(\"Pragma\", \"no-cache\")
response.setHeader(\"Connection\", \"close\")
등등 파일 다운로드시 필요한 몇가지 헤더를 먼저 설정하시고
다시 테스트해보세요.


--박창민 님의 글 [2003-01-15 17:38:31]
>os:win2000 server
resin : 2.1.6
apache : 2x

웹루트디렉토리와는 별도로 업로드 디렉토리를 만들고
다운로드시에 File을 이용해서 읽어와서
if (file.isFile())
{
FileInputStream fin = null;

fin = new FileInputStream(file);

ServletOutputStream outputStream = response.getOutputStream();

int read = 0;

while ((read = fin.read(b)) != -1)
{
outputStream.write(b, 0, read);
}

outputStream.close();

fin.close();
}

이런 형태로 화일을 다운로드 받게 합니다.
그런데 원본화일은 멀쩡한데도 불구하고 다운로드 받은 화일은 깨져 있습니다. 
전에 tomcat 같은 환경에서도 무난히 잘 되던건데 이상하네요..
resin 에서의 설정 문제 인가요?
이거 땜에 무지 고생하고 있습니다. 제발  빠른 답변 부탁합니다.
전에도 resin 에서 이러한 문제가 있어서 별도도 다른 서버를 돌린적이 있는데 운영체제나 버젼문제는 아닌거 같습니다.리눅스에서도 안되었거든요.
참고적으로 화일을 못찾는 문제는 아닙니다. 다 깨지는 건 아니고 
doc 같은 문서화일이 깨집니다. 내용이 깨지는 걸로 봐서는 character 문제인거 같기도 하고 그거땜에 헤더가 깨지는 거 같기도 한데 zip 같은건 또 안깨지는거 같더라구요.