본문 바로가기

php

php 첨부파일 다운로드시 공백제거 방법

 

홈페이지 게시판에 첨부된 파일을 다운로드 할때 상단에 소스가 존재하면 이를 공백으로 인식하여

txt형식 등의 파일 다운로드시 손상될수가 있습니다.

공백을 제거함으로써 해결 할 수 있는데

아래 굵게 빨간색으로 부분을 추가해주면됩니다.

 

<?php

ob_start();
if($mcfg_m_config_included != "YES") {
 include $DOCUMENT_ROOT."/m_config/m_config.php";
}
//마일리지 삭제
if($wid != ""){
 if($board_point_use == "y" && $minus_point != ""){
 $now = mktime();
 $contents = "파일다운";
 $pquery = "insert into nxshop2_point values ('게시판', '$wid', '',  '-', '$minus_point', '$contents', '$now',  '1')";
 $presult = mysql_query($pquery);
 }

 

  $len = filesize($file);
   $filename = basename($file);
   $file_extension = strtolower(substr(strrchr($filename,"."),1));

   switch( $file_extension ) {
     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;
     case "mp3": $ctype="audio/mpeg"; break;
     case "wav": $ctype="audio/x-wav"; break;
     case "mpeg":
     case "mpg":
     case "mpe": $ctype="video/mpeg"; break;
     case "mov": $ctype="video/quicktime"; break;
     case "avi": $ctype="video/x-msvideo"; break;
     case "php":$ctype="application/force-download";break;
     case "htm":
     case "hwp":$ctype="application/force-download";break;
     case "html":
     case 'txt' : $ctype = "text/plain"; break;

     default: $ctype="application/force-download";
   }

header("Content-type: ".$ctype."; name=\"".urlencode($filename)."\"");

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

ob_end_clean();
readfile($file);

?>

 

파일명의 공백이야기가 아니라. 특정 형식의 파일 다운로드시 공백문제로 손상되는경우입니다.