
SSD 부팅이 느리다... AHCI 설정...
|
PHP 파일 다운로드 스크립트에서의 한글처리 문제 (PHP;file;download;파일다운로드;한글파일이름;UTF-8;EUC-KR;)
|
| 메모智 -> 리눅스; 컴퓨터; PHP; |
|
| PHP 파일 다운로드 스크립트에서의 한글처리 문제 |
|
|
|
|
마이크로소프트의 인터넷익스플로러에서는 파일이름이 한글로 되어 있을 경우 php download 프로그램으로 그냥 보내면 문제가 발생한다. 윈도우의 인코딩이 EUC-KR의 확장판인 반면 리눅스에서는 수년전부터 기본인코딩으로 UTF-8을 사용하고 있기 때문이다.
if(!file_exists($fullpath)){
echo " alert('No File'); history.back();";
exit(0);
}
else {
if(eregi("(MSIE 5.5|MSIE 6.0|MSIE 7.0|MSIE 8.0)", $_SERVER["HTTP_USER_AGENT"])
&& !eregi("(Opera|Netscape)", $_SERVER["HTTP_USER_AGENT"])) {
$filename = iconv("UTF-8", "EUC-KR", $filename);
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Length: ".$size);
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: Binary");
header("Pragma: no-cache; public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
}
else {
header("Content-Description: File Transfer");
header("Content-Type: file/unknown");
header("Content-Length: ".$size);
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Description: PHP Generated Data");
header("Pragma: no-cache; public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
}
ob_clean();
flush();
readfile("$path");
}
위와 같이 PHP로 download.file.php라는 프로그램을 짰다. 여기서 다른 곳에서 보는 사이트들과 다른 부분은 $filename = iconv("UTF-8", "EUC-KR", $filename);라는 부분이다. 이는 MSIE에서 파일명이 한글인 경우에 문제가 발생하는 것을 방지해준다.
불여우(파이어폭스/FireFox) 3.6.3, 구글 크롬(Google Chrome) 4.1 등에서는 위와 같은 인코딩 변환을 해주지 않아도 아무런 문제없이 작동하였다. |
|
| 작성자: 써기 |
추천수: 3 |
첨부파일: 0 |
등록일: |
공개 MEMO
|
|
|

똑똑전화의 힘! MS의 윈도우8을 터치 전용으로 바꾸다...
|