Html & Script

다운로드에 관한 1원짜리팁

컨텐츠 정보

본문

<?
    session_start();
       
.... 중략.....(사용자 다운로드 권한체크등...)

        if (eregi("(MSIE 5.5|MSIE 6.0)", $HTTP_USER_AGENT)) {
            Header("Content-type:application/octet-stream");
            Header("Content-Length:".filesize($Path));
            Header("Content-Disposition:attachment;filename=".$user_file);
            Header("Content-Transfer-Encoding:binary");
            Header("Pragma:no-cache");
            Header("Expires:0");
        } else {
            Header("Content-type:file/unknown");
            Header("Content-Length:".filesize($Path));
            Header("Content-Disposition:attachment; filename=".$user_file);
            Header("Content-Description:PHP3 Generated Data");
            Header("Pragma: no-cache");
            Header("Expires: 0");
        }

        if (is_file($Path)) {
            $fp = fopen($Path, "rb");
            if (!fpassthru($fp)) fclose($fp);
            clearstatcache();
        } else {
            echo "해당 파일이나 경로가 존재하지 않습니다.";
        }
?>

대부분 위와 같이형식으로 사용할껍니다.
위의 경우 문제점은 hwp, xls등 파일열기를 하면 제대로 열리지가 않죠..
(아파치의 설정변경으로 가능한걸로 알고 있습니다)
session_start();을 빼면 파일열기가 되지만 그렇다고해서 session_start(); 를 안쓸수도 없고

그래서 Header("Location:경로/파일명") 로 다운하시는 분들도 있고...
이경우의 문제점은 익스에서 바로 출력되는 문제가있죠. 한글파일명일때도 문제가 있고...

해결책
위소스에서 session_start(); 아래에 header("Cache-control: private");  를 추가해주시면 모두 해결됩니다. 간단하죠?
이상 1원짜리팁이였습니다...

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
마음이 열린 사람이 껴안지 못할 현실이란 없다. 불가능이란 깨달은 이에게 이미 존재하지 않는다.