파일 다운로드 오류
본문
$filepath = G5_DATA_PATH.'/file/'.$bo_table.'/'.$file['bf_file'];
$filepath = addslashes($filepath);
$file_exist_check = (!is_file($filepath) || !file_exists($filepath)) ? false : true;
if ( false === run_replace('download_file_exist_check', $file_exist_check, $file) ){
alert('파일이 존재하지 않습니다.');
}
파일 명에 한글이 있는 파일을 다운하려고 하면 파일이 존재하지 않다고 오류가 납니다.
$filepath를 echo 로 출력 해보면 파일 경로는 잘 나오는데 is_file 과 file_exist에서
넣으면 파일을 못 찾습니다. 어떻게 하면 파일을 다운로드 할 수 있을가요?
!-->답변 2
서버 환경마다 차이가 조금씩 있을수 있다고 생각됩니다.
경험상 서버 파일에서 다이렉트로 받아서 처리되는 부분이 있는가하면 변환해서 처리되는 부분도 있네요
rawurlencode()와 urlencode() 함수를 사용해보시기 바랍니다.
$filepath를 위함수로 한번 더 감싸서 처리해보세요. 환경마다 다르기때문에 혹시 이게 먹일수도 있으니까요.
<?php
function mb_basename($path) { return end(explode('/',$path)); }
function utf2euc($str) { return iconv("UTF-8","cp949//IGNORE", $str); }
function is_ie() {
if(!isset($_SERVER['HTTP_USER_AGENT']))return false;
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) return true; // IE8
if(strpos($_SERVER['HTTP_USER_AGENT'], 'Windows NT 6.1') !== false) return true; // IE11
return false;
}
$filepath = './헬로_월드.txt';
$filesize = filesize($filepath);
$filename = mb_basename($filepath);
if( is_ie() ) $filename = utf2euc($filename);
header("Pragma: public");
header("Expires: 0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $filesize");
readfile($filepath);
참조 코드입니다.(테스트는 안해봤습니다. 인터넷에서 주워왔습니다 ^^; )
!-->
답변을 작성하시기 전에 로그인 해주세요.