HTTP 를 쓰는 것이 처음이라 그런지 모르는 것이 많아서 질문드립니다 <div><br></div> <div>request 와 respons 를 이용해서 파일다운로드를 구현하려 하는데</div> <div><br></div> <div>잘 안 되는 부분이 생겨서 염치 불구하고 질문글 올립니다</div> <div><br></div> <div>구현하려고 하는 것은</div> <div><br></div> <div>1. 여러개의 파일을 한꺼번에 다운받아야 하며</div> <div>2. 파일 다운로드 시에 저장하시겠습니까? 라는 팝업창(?) 이 나오지 않아야 합니다</div> <div>3. 서버에 저장되어 있는 파일을 사용자PC 에 저장하려고 합니다</div> <div><br></div> <div>그래서 다음과 같이 구현했습니다</div> <div><br></div> <div>for 문이 돌아가고 그 안에서</div> <div>fileDownload 함수가 호출됩니다</div> <div>해당 함수에는 다운로드에 필요한 변수값들이 들어가게 되고요</div> <div><br></div> <div>함수는 다음과 같습니다</div> <div><br></div> <div><div><span class="Apple-tab-span" style="white-space:pre;"> </span>// create file. </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>File f = new File(filepath+fileName);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// set for download excel file.</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>String contentType = request.getContentType();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setContentType("x-msdownload");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (contentType == null) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (request.getHeader("user-agent").indexOf("MSIE 5.5") != -1)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setContentType("doesn/matter;");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>else</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setContentType("application/octet-stream");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>} else {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setContentType(contentType);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setHeader("Content-Transfer-Encoding:", "binary");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setContentType("application/vnd.ms-excel;charset=euc-kr");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes("ksc5601"), "8859_1") + ";");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setHeader("Content-Length", "" + f.length());</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setHeader("Pragma", "no-cache;");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>response.setHeader("Expires", "-1;");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>byte b[] = new byte[1024];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>BufferedInputStream fin = new BufferedInputStream(new FileInputStream(f));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>try{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int read = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while ((read = fin.read(b)) != -1)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>outs.write(b,0,read);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}catch (Exception e){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}finally{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (outs!=null) outs.close();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (fin!=null) fin.close();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div></div> <div><br></div> <div><br></div> <div><br></div> <div>해당 구문을 돌리면 일단 에러는 나타나지 않습니다</div> <div>제가 모르는 에러가 있는지 모르겠지만 예상 가능한 에러는 for 문 밖에서 죄다 catch 로 걸러내고 있습니다</div> <div>고수 분들의 조언을 좀 듣고 싶습니다</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.