묻고답하기
첨부파일 다운로드하면 파일이 깨집니다ㅜㅜ
2012.03.16 14:17
안녕하세요~
IIS7으로 XE 1.4.5.10을 사용하고 있습니다.
게시판에 파일을 첨부하고 다운받으면 파일이 잘리는 문제가 있어서 문의드립니다!
test.txt라는 파일을 예로 들겠습니다. test.txt에 test라고 쓰고
게시판에 파일을 첨부하면 서버의 첨부파일 폴더에는 파일이 정상적으로 저장되고 내용도 test라고 제대로 기록되어 있습니다.
하지만 다시 클릭해서 첨부된 파일을 다운받고 열어보면 te까지만 써져있네요....마지막 st가 잘리는 문제가 있습니다.
방법을 찾아보다가 파일모듈에 있는 file.controller.php파일에서
header("Content-Length: " .(string)($file_obj->file_size)); 부분을 주석처리하고 다시 다운받아보면 test로 제대로 쓰여져 있긴 합니다.
하지만 다른 확장자(pdf,zip 등)의 파일을 첨부하고 다운받으면 파일이 깨져있어서 열어볼 수가 없어요ㅜㅜ
서버에 저장된 파일은 제대로 되어 있는데 다운만 받으면 이런 문제가 발생합니다..
사이트 주소는 cadcam.yonsei.ac.kr 입니다.
도움 부탁드립니다!!
댓글 2
-
카르마
2012.03.16 16:13
예전버전의 XE에 있던 버그때문입니다.화일을 DB에 저장된 크기만큼만 불러오는데 저장시 문제가 좀 있는 것같더군요.$file_obj->file_size = filesize($uploaded_filename);header("Cache-Control: ");header("Pragma: ");header("Content-Type: application/octet-stream");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Content-Length: " .(string)($file_obj->file_size));header('Content-Disposition: attachment; filename="'.$filename.'"');로 수정해보십시요.$file_obj->file_size = filesize($uploaded_filename); 부분이 추가되어있습니다.즉 DB에 기록된 화일사이즈를 뿌리는 것이 아니고 새로 확인된 화일사이즈만큼 뿌려주게 됩니다. -
Future Investor
2012.03.20 18:00
도움주셔서 감사합니다!! 조언해주신대로 해보았는데도 여전히 잘라먹네요ㅠㅠ 자세히 확인해보니 50바이트짜리 파일을 업로드하면 서버 files폴더에는 제대로 저장됩니다. 그리고 DB의 파일사이즈 칼럼에서도 50바이트로 표시되어 있고요... 다운받아서 사이즈 확인해보면 동일하게 50바이트인데, 막상 파일을 열어보면 마지막 부분 3글자가 없어져 있습니다ㅜㅜㅜ -
Future Investor
2012.03.20 17:59
도움주셔서 감사합니다!! 조언해주신대로 해보았는데도 여전히 잘라먹네요ㅠㅠ 자세히 확인해보니 50바이트짜리 파일을 업로드하면 서버 files폴더에는 제대로 저장됩니다. 그리고 DB의 파일사이즈 칼럼에서도 50바이트로 표시되어 있고요... 다운받아서 사이즈 확인해보면 동일하게 50바이트인데, 막상 파일을 열어보면 마지막 부분 3글자가 없어져 있습니다ㅜㅜㅜ