케이보드 첨부파일 제목(파일명) 한글 깨짐 문제 오류

1. 정확한 제품 또는 플러그인 이름

KBoard

 

2. 상세 내용

안녕하세요.

게시판 첨부파일 다운로드 시 언제부턴가 한글이 깨지는 문제가 발생했습니다.
원본 제목: 구체적이미지20200216
깨진 제목: êµ¬ì²´ì _ì_´ë¯¸ì§_20200216

그래서 KBController.class.php의 파일 다운로드 부분 코드를 챗GPT에게 물어봐서 해결했습니다. 다음 업데이트 때 반영하여 수정해주셨으면 좋겠습니다.^^
역시 파일 인코딩 문제였고, UTF-8 설정해주어 해결되었습니다^^
기존 코드: header('Content-Disposition: attachment; filename="' . $file_info->file_name . '"');
수정 코드: header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode($file_info->file_name));

[ChatGPT 답변]
문제는 파일명이 웹 브라우저에 전달될 때 인코딩 문제가 발생하기 때문입니다. 이를 해결하기 위해 파일 이름을 rawurlencode 함수로 인코딩하거나 'Content-Disposition' 헤더의 filename* 매개변수를 사용해야 합니다.
다음은 수정된 코드 일부입니다:

if($ie){
    $file_info->file_name = iconv('UTF-8', 'EUC-KR//IGNORE', $file_info->file_name);
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
}
else if($edge){
    $file_info->file_name = urlencode($file_info->file_name);
}
else{
    header('Pragma: no-cache');
}

header('Content-type: ' . $file_info->mime_type);

// 기존 코드
//header('Content-Disposition: attachment; filename="' . $file_info->file_name . '"');

// 수정된 코드
header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode($file_info->file_name));

header('Content-Transfer-Encoding: binary');
header('Content-length: ' . $file_info->size);
header('Expires: 0');

@ob_clean();
@flush();

if($fd = fopen($file_info->full_path, 'r')){
	while(!feof($fd)){
		echo fread($fd, 4096);
		flush();
	}
}

위의 수정된 코드에서는 파일 이름을 UTF-8로 인코딩하고 rawurlencode 함수를 사용하여 안전하게 전송할 수 있도록 하였습니다. 이렇게 하면 다운로드 받은 파일의 이름이 제대로 보일 것입니다.
또한 다양한 웹 브라우저에서 잘 작동하는 방법이므로 IE와 Edge에 대한 별도의 처리는 필요하지 않습니다.

[ChatGPT 답변 끝]

 

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기