다운로드에 관한 1원짜리팁
작성자 : 김영철
등록날짜 : 2009.01.14 22:13
<? 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원짜리팁이였습니다... |
-php school 에서 펌-
테스트 하실려면
$cache_limiter = session_cache_limiter();
echo $cache_limiter;
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|