테스트 사이트 - 개발 중인 베타 버전입니다

MAC(맥)에서 올린 파일이 다운로드하면 파일명이 표시되지 않습니다. 채택완료

김말이먹고싶따 8년 전 조회 13,422

첨부한 파일을 다운로드하면 이상한 문자만 가득한 download.php만 다운이 되어서

아래 글을 참고해서 bbs/download.php 파일을 고쳤습니다. 

 

참고 URL:

https://sir.kr/bbs/board.php?bo_table=g4_qa&wr_id=185471?bo_table=g4_qa&wr_id=185471">https://sir.kr/bbs/board.php?bo_table=g4_qa&wr_id=185471?bo_table=g4_qa&wr_id=185471

 

주석처리한 곳

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

    header("Content-Disposition: attachment; filename=\"".basename($filepath)."\";" );    

    header("Content-Transfer-Encoding: binary"); 

    header("Content-Length: ".$fsize); 

    ob_clean(); 

 

    flush();

 

그런데 문제가 또 생겼습니다..

제대로 다운로드는 되지만 mac에서 올린 파일명은 여전히 download.php 입니다.

 

변경 >>> 

header("Content-Disposition: attachment; filename=\"".$original."\";" );  

빨간색 부분을 위와 같이 변경해도 파일명이 바뀌지 않는데 

원인을 알 수 있을까요? 답답하네요...아시는 분이 있으시다면 답변 꼭 좀 부탁드리겠습니다!!!

 

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인