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
우리는 유리할 때는 형제가 되고, 불리할 때는 남이 되며, 이로울 때는 친구가 되고, 해로울 때는 원수가 되는 그러한 인간관계를 증오한다. (북녘 하늘의 명언)