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
자기가 그만한 힘이 없으면서도 커다란 존재라고 생각하는 사람은 거만하다. 또, 자기의 가치를 실제보다 적게 생각하는 사람은 비굴하다. (아리스토 텔레스)