하지만 저것은 웹브라우저에서 열리는 일부 확장자의 경우(htm,gif,jpg,avi…)바로 열려버려 골치를 썩이게 됩니다;
이런 문제를 해결하고 바로 다운로드가 가능하도록 하는 팁을 소개할까 합니다.
의외로 아주 간단하게 헤더를 건드리는 것으로 해결됩니다;
<?
//이 헤더가 바로 다운로드시키는 역할을 합니다.
header("Content-Type: application/force-download");
//이게 없으면 저장할 때 해당 파일명으로 저장되지 않고 이 PHP파일의 이름으로 저장됩니다;;
//즉, abc.gif를 이 파일(d.php라 하죠)에서 다운로드시켜서 다운로드창이 떴을 때 abc.gif로 저장하는게 아니라 d.php로 저장하게 됩니다.
//이 헤더는 브라우저 영향도 받습니다. 익스플로러용과 非익스플로러용으로 나누어 보내줘야 합니다.
if(preg_match("/MSIE/i",getenv("HTTP_USER_AGENT"))) {
header("Content-Disposition: filename=".basename("파일명").";");
} else {
header("Content-Disposition: attachment; filename=".basename("파일명").";");
}
//그다음 해당 파일을 읽어 출력합니다. 잠시동안 해당 파일로 둔갑하는라고 생각하면 쉬울까요;
readfile("파일명");
?>
저 소스가 표준은 아닙니다. 하지만 저것만으로도 충분히 잘 동작합니다;;;;;;(이런 무책임한..)
(표준은 헤더를 꽤 많이 보내던 걸로 기억하는데..어디서 봤는지 기억이 잘 안나네요;;)