다운로드에 관한 1원짜리팁
컨텐츠 정보
- 18,314 조회
- 6 추천
- 목록
본문
<?
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원짜리팁이였습니다...
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
등록된 댓글이 없습니다.