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원짜리팁이였습니다...

관련자료

등록된 댓글이 없습니다.
Today's proverb
무엇인가를 이루려고 하는 마음이 없다면 세상 어디를 가나 두각을 나타낼 수가 없다. 무지함을 두려워 말라, 거짓 지식을 두려워 하라. (파스칼)