그누보드5 파일 다운로드 오류문제

그누보드5 파일 다운로드 오류문제

QA

그누보드5 파일 다운로드 오류문제

답변 1

본문

그누보드5를 이용하여 홈페이지를 두개 만들었는데 하나는 거의 순정에 가깝고 제가 직접 제작한거라

download.php를 건드리지 않고 제작하여 어떤 파일도 문제없이 다운받아지는데

 

다른분이 공부하라고 만들어주신 사이트는 download.php가 몇줄정도 변형되어있어 순정파일로 바꾸면

다운로드가 진행도 되지 않고 그대로 두면 파일들이 아래와 같이 그냥 브라우저에서 열려버립니다.

 

%PDF-1.5 %µµµµ 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R] /MediaBox[ 0 0 595.44 841.68] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xœµ]Ýܸ‘7àÿ¡‘§îàFC¿³ê $¹$6pÞ<ø6½ÞÜf=»³ãøî¿?%u‹Å¢ÔZØŒ»Õ¬K¬V‹›û¿lîÿtøýqÃÞ¼Ùì‡ÍO¯_íß½~uÿÈ7À*&7ï¾}ýŠo˜ÿßp§*É7FÊJøo~xý 6ïž7¬R”Ù|yýŠm>â~÷úÕû‡} ¼àoþ¾y÷‡×¯N~Ø¿¾~µ9ýé°Ùô(ó!eHPá)»BÊÛÍ.OŠHJ^±ÂÉúO7vóî›÷[Ë(ò¢„× meU)¯k-ÜžïÁkY2qÁlåÄZ¼V%“\VÒ/,çÔ¾VÔduÑd•¬T)›ÉÉš¢ÉjÿQùd9¸ú ŽÄdmK¹!+d%óE¯ujf£ÁÝý?|ú¸Ù~ÿ´q•Óñ²u¦2~rž~K…›³äàÃñ˜©xÙx|¬_dž8ÏmU¥šÑ7wþ#¦ý‡(˼ê‘êÃâŒWZG?dáyl#Åท?ý±Ûõ!÷<øä]”Ó(Ý*,å^—:ÛŸ‚-'X*Çïß@ÃQ •jǾ›à¡Q•°ñ£y*"ÎÄ­_$шÎwf¯ÞäÖÑÀ0Øù7¢ç@5Tî¥ÑB5a/Ç[ *÷’gõ¨Ž„ ¢Ò1ÔÚxÍsÇùÞiåmO–ÅÀHÜZTÊ–ãžZÚZ£ÚébwwnËòCÉË*è3ÕK#ø”åÔìÁ/!"A|½Ý݉-

 

일부분만 잘라온거구요 pdf txt 등등등 다 브라우저내에서 실행이됩니다.

다른 검색부분에서 

 

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 if (preg_match("/Firefox/i", $_SERVER['HTTP_USER_AGENT'])){
    header("content-type: file/unknown");
    header("content-length: ".filesize("$filepath"));
    header("content-disposition: attachment; filename=\"".basename($file['bf_source'])."\"");
    header("content-description: php generated data");
} 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();
-----------------------------------------------------

검색 소스도 확인해보고 수정 해봤지만 하얀 화면으로 먹통이 됩니다.

다시 또 돌리면 진행은 되지만 위 오류처럼 브라우저에서 바로 열려버리구요

 

도움을 얻고 싶습니다.

이 질문에 댓글 쓰기 :

답변 1

순정으로 변경하고 그부분에 대한 에러를 잡는게 편할듯합니다.
그누보드에서 넘겨주는 값은 아마 보드 id랑 wr_no인가 두가지 일거예요.

순정보드에서 넘겨주는 값 만 수정된보드에서도 넘겨 주시고 순정으로 바꿔서 사용하시는게 좋을듯하구요.

여건이 안되면 보드 리스프 파일과 증상을 보수있는 사이트도 함께 올려주시면 좋을듯합니다.
 // 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("Content-Type: $ctype");

위소스에서 다운로드는 위 두부분에서 결정됩니다.
만드신 의도로보면 웹에서 바로 보여주기위서 인듯한데 저부분이 필요 없을듯하구요
header("Content-Type: $ctype");  ===> header("Content-Type: application/octet-stream");    이렇게 변경해보세요.

 

// 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";
    }
이부분은 지우거나 주석처리하세요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 37
© SIRSOFT
현재 페이지 제일 처음으로