출처 : https://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=451792&page=1
*질문
centos 6.x를 utf-8환경에서 사용중입니다.
apache 설정파일에 AddDefaultCharset UTF-8을 추가하였습니다.
모든 php파일은 utf-8형식으로 되어 있습니다.
'가나다라.txt' 파일은 서버에서 직접만든 파일로 내용은 물론 파일명도 utf-8입니다.
에디트플러스에서 그냥 보면 파일명이 깨저보이고 고급옵션에서 'utf-8 파일명사용'을 체크해야 정상으로 보이는 그런 파일입니다.
이파일을 php를 통해 다운로드시키고자 아래의 코드를 만들었습니다.
$file = "./가나다라.txt";
header("Content-Type: text/plain; charset=utf-8");
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
header("Content-Length: ".filesize($file));
readfile($file);
크롬, 파이어폭스, 오페라에선 잘되는데 IE에서는 파일명이 깨저서 다운로드 됩니다.
물론 iconv를 사용하여 파일명을 변환하면 되지만 utf-8파일명을 있는 그대로 사용할수는 없는지요?
* 답변
- // 브라우저별 파일이름 깨지는거 방지로 추가함
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (preg_match('/msie/', $userAgent)) { // 익스일 경우
$FILE_NM = iconv("utf-8","euc-kr", $FILE_NM);
}
//PHP 소스
$file = $_SERVER[DOCUMENT_ROOT].$FILE_PATH; //파일의 절대 경로
header("Content-type: application/x-unkown");
header("Content-Disposition: attachment; filename=$FILE_NM");
header('Content-length: '.filesize($file));
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
readfile($file);
'프로그램개발 > ServerSide(PHP,Node.js)' 카테고리의 다른 글
웹 어셈블리를 보다 쉽게 웹 어플리케이션에 적용하는 방법 (0) | 2017.08.16 |
---|---|
REST 연구 요약본 (0) | 2017.08.08 |
웹아웃소싱(위시켓,프리모아..)이용후기 vol.1 (0) | 2017.07.26 |
익명 기고 | '개발자가 털어놓는' 개발자의 비밀 9가지 (0) | 2017.07.20 |
웹개발 관련 스크랩 (0) | 2017.07.17 |