한글명 파일 다운로드 안되는 현상..

한글명 파일 다운로드 안되는 현상..

QA

한글명 파일 다운로드 안되는 현상..

본문

write_pro.php(글쓰기 처리)

if ($file_1 [name]) {
 
 $ext_1 = array_pop ( explode ( ".", strtolower ( $file_1 [name] ) ) );
 
 if (@ereg ( $ext_1, "php|php3|php4|htm|inc|html" )) {
  echo "
  <script>
   alert('PHP, HTML파일은 업로드가 제한됩니다');
   history.back(1);
  </script>
  ";
  exit ();
 }
 
 $find_1 = '../../file/' . iconv ( "utf-8", "euc-kr", $file_1 [name] );
 
 if (file_exists ( $find_1 )) {
  $name_1 = substr ( $file_1 [name], 0, strrpos ( $file_1 [name], "." ) );
  $ext_1 = substr ( $file_1 [name], strrpos ( $file_1 [name], "." ) );
  
  $file_1 [name] = $name_1 . $ext_1;
  $i = 0;
  
  while ( file_exists ( '../../file/' . iconv ("utf-8", "euc-kr", $file_1 [name] ) ) ) {
   $i ++;
   $file_1 [name] = $name_1."_" .$i.$ext_1;

  }
 }
//$fn_1 = $file_1[name] . "1." . $ext_1;

 /* preg_replace(“/s+/”, “”,$file_1[name]); // 공백제거*/
  //$file_1[name] = str_ireplace(" ", "", $file_1[name]);
// $file_1[name] = $string = preg_replace ("/[ #\&\+\-%@=\/\\\:;,\,\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i", "", $file_1[name]);

 move_uploaded_file ( $file_1 [tmp_name], $_SERVER ['DOCUMENT_ROOT'] . '/file/' . iconv ( "utf-8", "euc-kr", $file_1[name] ));
}

 

 

-------------------------------------------------------------

read.php(상세페이지)

<?php
 if ($read [file_1]) {

  ?>
 <tr id="read_top">
  <td colspan="2">첨부파일 1 : <a
   href="/bbs/board_2/download.php?down=<?=$read[file_1] ?>" target="_blank" ><?= $read[file_1] ?></a></td>
 </tr>
 <?php
 }
 ?>

=-------------------------------------------------

download.php

<?php


/* 크롬으로 들어왔을때 down파일의 명칭의 인코딩을 변경 */
$downFileName = $_GET[down];
$u_agent = $_SERVER['HTTP_USER_AGENT'];  //  들어온사람의 브라우저를 변수 $u_agent 에 담아서
if(preg_match('/Chrome/i',$u_agent) )
{
    $downFileName = iconv( "UTF-8", "EUC-KR", $_GET[down] );
}

$filepath = $_SERVER ['DOCUMENT_ROOT'] . '/file/' . $downFileName;
$filesize = filesize ( $filepath );


//$filepath = $_SERVER ['DOCUMENT_ROOT'] . '/file/' . $_GET[down];
//$filesize = filesize ( $filepath );

 

//header("Content-Type:text/html; charset=euc-kr");
header ("Content-Type:text/html; charset=UTF-8");
header("Content-Description: File Transfer");
header ("Pragma: no-cache; public" );
header ("Expires: 0" );
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header ("Cache-Control : public");
header ("Content-Disposition: ".$_SERVER['HTTP_POST']." Generated Data");
header ("Content-Type: application/octet-stream" );
//header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode($_GET[down]) . '; filename="' . rawurlencode($_GET[down]) . '"');
header ("Content-Disposition:attachment; filename=".$_GET[down].";");
header ("Content-Transfer-Encoding: binary" );
header ("Content-Length: $filesize" );


/*function isIE() {
if(stripos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0') != false) return true;
if(stripos($_SERVER['HTTP_USER_AGENT'], 'MSIE') != false) return true;
return false;
}*/

ob_clean ();
flush ();
readfile ( $filepath );
?>

 

이렇게 하고있는데

익스에서도 파일을 다운로드하면 인코딩문제가뜨면서 파일안에 아무내용이없습니다..

파일사이즈는 크기대로나오는데 내용물이하나도없어요..

크롬도 마찬가지입니다..

몇일째 헤엄치고있는데.. 끄내주실분 계실까요..

이 질문에 댓글 쓰기 :

답변 1

그누보드 처럼..

파일은 일정한 영문+숫자 파일명을 생성해서 저장하고

한글 파일명은 따로 저장해둡니다.

다운로드할때는 저장한 파일명으로 읽어들이고,

한글 파일명으로 변환해서 다운받게 하는게 좋습니다.

한글 파일명 그대로 저장하면 다양한 문제가 생깁니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT