크롬에서 다운받은 첨부파일에 특수문자가 있으면 %5B 식으로 나타납니다.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

크롬에서 다운받은 첨부파일에 특수문자가 있으면 %5B 식으로 나타납니다.. 정보

크롬에서 다운받은 첨부파일에 특수문자가 있으면 %5B 식으로 나타납니다..

본문

크롬과 쿨노보에서 나타나는 증상입니다..

첨부된 파일명에 특수문자가 있을때..
예를 들어서 '[추천]자료.pdf' 라는 파일을 다운받으면..
파일명이 '%5B추천%5D자료.pdf' 라고 나타납니다..

익스8 , 파폭에서는 이상이 없이 '[추천]자료.pdf' 라고 다운받아지는걸 보아..
DB에는 '[추천]자료.pdf' 로 정상적으로 저장이 되어 있는것 같은데..
크롬과 쿨노보에서는 특수문자가 왜 저렇게 나타날까요??

크롬과 쿨노보에서도 '[추천]자료.pdf' 로 다운로드 될수 있게 하실줄 아시는분 계신가요??
  • 복사

댓글 전체

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();




이렇게 하면 될지도 모르겟네요  ㅎㅎ...
© SIRSOFT
현재 페이지 제일 처음으로