묻고답하기
한글 첨부 파일 다운로드 파일을 찾을 수 없는 문제
2010.12.15 20:37
이 문제로 몇년전부터 질문을 올렸지만... 답을 찾지 못하다가
최근 아제나님이 비슷한 질문을 올리시면서 임시로나마 해결하신것을 보고 아제나님 도움으로 문제를 해결했습니다.
그런데 제가 하고싶은 질문은.. 아제나님의 질문처럼 어떻게 하면 xe의 코어에 손대지 않고
아파치 세팅이나 php세팅을 통해서 혹은 db수정을 통해서 버전업을 하더라도 문제없이 사용을 할 수 있느냐 하는 것입니다.
먼저 제 상황은
리눅스의 xe를 db익스포트와 dump명령을 통한 tar파일 압축파일을 내려받아
윈도우의 APM환경에서 디비임포트 하고 TAR파일 압축 풀어서 복원했습니다.
이과정에서 다른것은 다 되지만 한글 첨부파일만 클릭하면(JPG, WMA 같은 미디어파일)
요청하신 파일을 찾을 수 없습니다. 로 나오는 문제였습니다.
제가 살펴본 차이는 DB의 FILES에서
리눅스는 첨부파일의 소스네임과 템프네임이 동일하다는것..(예를들어 목걸이.JPG 목걸이.JPG)
윈도우 아파치에서는 한글파일을 업로드하면 소스네임과 템프네임이 다르게 DB에 올라간다는것(예 목걸이.JPG- >>>ASD46246.JPG)
이에대해 아제나님께 메일문의 결과 받은 답변 아래 그대로 복사해 올립니다.
여러분들도 한번 보시고 해결책을 아시는분은 도움 주시길 부탁드립니다.
_____________여기서부터 답변 _____________________________________________________
리눅스에서는 첨부 파일을 저장할 때 이름 그대로를 저장하더군요.
한글.txt 파일을 올리면 폴더에 한글.txt 파일로 저장되어 있습니다.
문제는 SQL에는 UTF-8로 저장되어 있기 때문에,
첨부 파일 이름이 UTF-8로 인식이 되어서,
EUC-KR로 저장되어 있는 윈도우의 한글.txt 파일을 찾지 못합니다.
그래서 파일을 찾기 전에 DB에서 읽어온 값을 EUC-KR로 변경하는 작업을 해주면
임시적으로 해결되긴 합니다.
아래처럼 말이죠.
/xe/modules/document/document.item.php 파일 557줄 추가
$source_file = $file->uploaded_filename; 문장 다음에 아래 라인 추가
$source_file = iconv( "UTF-8", "EUC-KR", $source_file );
/xe/modules/file/file.model.php 파일 138줄 추가
$file->download_url = $this->getDownloadUrl("$file->file_srl, $file->sid); 문장 다음에 아래 라인 추가
$file->uploaded_filename = iconv( "UTF-8", "EUC-KR", $file->uploaded_filename );
이렇게 변경하면 임시적으로 해결이 됩니다만...
완벽한 해결책은 아니죠.
그래서 좋은 방법을 찾고 있었던 것이구요 ^^