웹마스터 팁

http://micsland.com/temp/fdown.php?file=calendar.phphttp://micsland.com/temp/fdown.php?file=fdown.php오랜만에 쓰네요;;별 거 아니지만 도움이 되시길 :D

*몇번째 수정하는지;;쿨럭;;;;
=================================================================

파일 다운로드 시스템을 구현할 때 일반적으로

<?
header("location:파일명");
?>

을 사용합니다.

하지만 저것은 웹브라우저에서 열리는 일부 확장자의 경우(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("파일명");
?>


저 소스가 표준은 아닙니다. 하지만 저것만으로도 충분히 잘 동작합니다;;;;;;(이런 무책임한..)
(표준은 헤더를 꽤 많이 보내던 걸로 기억하는데..어디서 봤는지 기억이 잘 안나네요;;)


링크#1,2에서 체험(...)해 보실 수 있습니다;;;


응용입니다;;

제로보드 download.php 23번째줄에

header("location:$data[$filename]");

구문이 있네요. 이것을 당장

header("Content-Type: application/force-download");
if(preg_match("/MSIE/i",getenv("HTTP_USER_AGENT"))){
    header("Content-Disposition: filename=".basename($data[$filename]).";");
}else{
    header("Content-Disposition: attachment; filename=".basename($data[$filename]).";");
}
readfile($data[$filename]);

이렇게 고쳐서 쓰시면 바로 적용되겠죠..
(이것도 응용이랍시고 올렸냐?)


테스트목적이라 할지라도 절대로 아래와 같은 소스를 자신의 계정에 업로드하는 일이 없기를 바랍니다;

<?
header("Content-Type: application/force-download");
if(preg_match("/MSIE/i",getenv("HTTP_USER_AGENT"))){
    header("Content-Disposition: filename=".basename($file).";");
}else{
    header("Content-Disposition: attachment; filename=".basename($file).";");
}
readfile($file);
?>


제목 글쓴이 날짜
포항오피 포항출장안마 ⦑오피쓰주소.COM⦒ 포항OP 포항오피 포항오피 koykoyah 2025.02.20
동두천오피 동두천출장안마 ⦑오피쓰주소.COM⦒ 동두천OP 동두천오피 동두천오피 koykoyah 2025.02.20
산본오피 산본오피 ⦑출장안마사이트.COM⦒ 산본OP 산본스파 산본오피 koykoyah 2025.02.20
구미오피 구미출장안마 ⦑출장안마사이트.COM⦒ 구미OP 구미오피 구미오피 koykoyah 2025.02.20
연신내오피 연신내오피 ⦑오피쓰.COM⦒ 연신내OP 연신내스파 연신내오피 koykoyah 2025.02.20
청주오피 ⦑오피사이트.NET⦒ 청주OP 청주오피 청주출장샵 청주오피 koykoyah 2025.02.20
홍대오피 ⦑오피쓰.COM⦒ 홍대오피 홍대OP 홍대건마 홍대오피 koykoyah 2025.02.20
익산오피 ⦑오피쓰.COM⦒ 익산마사지 익산오피 익산오피 익산OP koykoyah 2025.02.20
제주도오피 제주도OP ⦑오피쓰주소.COM⦒ 제주도휴게텔 제주도오피 제주도오피 koykoyah 2025.02.20
전주오피 전주출장안마 ⦑오피쓰주소.COM⦒ 전주OP 전주오피 전주오피 koykoyah 2025.02.20
영등포오피 ⦑출장마사지안내.COM⦒ 영등포마사지 영등포오피 영등포오피 영등포OP koykoyah 2025.02.20
영등포오피 ⦑오피사이트.NET⦒ 영등포OP 영등포오피 영등포출장샵 영등포오피 koykoyah 2025.02.20
대구오피 ⦑오피쓰.COM⦒ 대구오피 대구출장마사지 대구오피 대구OP koykoyah 2025.02.20
신림오피 신림오피 ⦑오피사이트.NET⦒ 신림OP 신림스파 신림오피 koykoyah 2025.02.20
신림오피 ⦑출장마사지안내.COM⦒ 신림오피 신림출장마사지 신림오피 신림OP koykoyah 2025.02.20
서초오피 서초출장안마 ⦑오피사이트.NET⦒ 서초OP 서초오피 서초오피 koykoyah 2025.02.20
신촌오피 신촌출장안마 ⦑오피.CLUB⦒ 신촌OP 신촌오피 신촌오피 koykoyah 2025.02.20
연신내오피 ⦑오피사이트.NET⦒ 연신내오피 연신내OP 연신내건마 연신내오피 koykoyah 2025.02.20
천안오피 천안OP ⦑오피사이트.NET⦒ 천안휴게텔 천안오피 천안오피 koykoyah 2025.02.20
여의도오피 ⦑오피사이트.NET⦒ 여의도오피 여의도출장마사지 여의도오피 여의도OP koykoyah 2025.02.20