크롬에서 다운받은 첨부파일에 특수문자가 있으면 %5B 식으로 나타납니다.. 정보
크롬에서 다운받은 첨부파일에 특수문자가 있으면 %5B 식으로 나타납니다..본문
크롬과 쿨노보에서 나타나는 증상입니다..
첨부된 파일명에 특수문자가 있을때..
예를 들어서 '[추천]자료.pdf' 라는 파일을 다운받으면..
파일명이 '%5B추천%5D자료.pdf' 라고 나타납니다..
익스8 , 파폭에서는 이상이 없이 '[추천]자료.pdf' 라고 다운받아지는걸 보아..
DB에는 '[추천]자료.pdf' 로 정상적으로 저장이 되어 있는것 같은데..
크롬과 쿨노보에서는 특수문자가 왜 저렇게 나타날까요??
크롬과 쿨노보에서도 '[추천]자료.pdf' 로 다운로드 될수 있게 하실줄 아시는분 계신가요??
첨부된 파일명에 특수문자가 있을때..
예를 들어서 '[추천]자료.pdf' 라는 파일을 다운받으면..
파일명이 '%5B추천%5D자료.pdf' 라고 나타납니다..
익스8 , 파폭에서는 이상이 없이 '[추천]자료.pdf' 라고 다운받아지는걸 보아..
DB에는 '[추천]자료.pdf' 로 정상적으로 저장이 되어 있는것 같은데..
크롬과 쿨노보에서는 특수문자가 왜 저렇게 나타날까요??
크롬과 쿨노보에서도 '[추천]자료.pdf' 로 다운로드 될수 있게 하실줄 아시는분 계신가요??
댓글 전체
혹시 이 팁이 도움이 될지 모르겠네요.
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=27986
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=27986
해당 답변은 공백에 관한 답변이라 그런지 적용이 안되네요..
특수문자는 여전히 %5B 같은 모양으로 나타납니다.. ㅠㅠ
특수문자는 여전히 %5B 같은 모양으로 나타납니다.. ㅠㅠ
ecode 되서 나오는거 같네요ㅕ
urlencode , urldecode 함수 참고해보세요
urlencode , urldecode 함수 참고해보세요
if (preg_match("/^utf/i", $g4[charset]))
//$original = urlencode($file[bf_source]);
$original = str_replace("+","%20", urlencode($file[bf_source])); // utf-8 첨부파일 공백 +로 되는 현상 해결위함
else
$original = $file[bf_source];
@include_once("$board_skin_path/download.tail.skin.php");
/*if(preg_match("/msie/i", $_SERVER[HTTP_USER_AGENT]) && preg_match("/5\.5/", $_SERVER[HTTP_USER_AGENT])) {
header("content-type: doesn/matter");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-transfer-encoding: binary");
} else {
header("content-type: file/unknown");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-description: php generated data");
}
header("pragma: no-cache");
header("expires: 0");
flush();
*/
// Must be fresh start
if( headers_sent() )
die('Headers Already Sent');
// Required for some browsers
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// Parse Info / Get Extension
$fsize = filesize($filepath);
$path_parts = pathinfo($filepath);
$ext = strtolower($path_parts["extension"]);
// Determine Content Type
switch ($ext)
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/Opera/i', $_SERVER['HTTP_USER_AGENT'])) echo header("content-disposition: attachment; filename=\"".basename(rawurlencode($file['bf_source']))."\";");
else echo header("content-disposition: attachment; filename=\"".basename($file['bf_source'])."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fsize);
ob_clean();
flush();
이렇게 하면 될지도 모르겟네요 ㅎㅎ...
//$original = urlencode($file[bf_source]);
$original = str_replace("+","%20", urlencode($file[bf_source])); // utf-8 첨부파일 공백 +로 되는 현상 해결위함
else
$original = $file[bf_source];
@include_once("$board_skin_path/download.tail.skin.php");
/*if(preg_match("/msie/i", $_SERVER[HTTP_USER_AGENT]) && preg_match("/5\.5/", $_SERVER[HTTP_USER_AGENT])) {
header("content-type: doesn/matter");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-transfer-encoding: binary");
} else {
header("content-type: file/unknown");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-description: php generated data");
}
header("pragma: no-cache");
header("expires: 0");
flush();
*/
// Must be fresh start
if( headers_sent() )
die('Headers Already Sent');
// Required for some browsers
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// Parse Info / Get Extension
$fsize = filesize($filepath);
$path_parts = pathinfo($filepath);
$ext = strtolower($path_parts["extension"]);
// Determine Content Type
switch ($ext)
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/Opera/i', $_SERVER['HTTP_USER_AGENT'])) echo header("content-disposition: attachment; filename=\"".basename(rawurlencode($file['bf_source']))."\";");
else echo header("content-disposition: attachment; filename=\"".basename($file['bf_source'])."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fsize);
ob_clean();
flush();
이렇게 하면 될지도 모르겟네요 ㅎㅎ...