파일 다운로드 오류

파일 다운로드 오류

QA

파일 다운로드 오류

본문



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

참조 코드입니다.(테스트는 안해봤습니다. 인터넷에서 주워왔습니다 ^^; )

답변을 작성하시기 전에 로그인 해주세요.
전체 2,432
QA 내용 검색

회원로그인

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