웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
HTML,이미지,동영상 파일 열리지 않고 다운로드되도록 만들기(수정)
2004.02.19 20:18
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);
?>
*몇번째 수정하는지;;쿨럭;;;;
=================================================================
파일 다운로드 시스템을 구현할 때 일반적으로
<?
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);
?>
댓글 21
제목 | 글쓴이 | 날짜 |
---|---|---|
폴더에 사진올려놓고 리스트자동으로 만들기 [7] | 김인기 | 2004.02.22 |
여러 DB에서 최근 게시물 추출하기 위한 소스 입니다. [6] | NS | 2004.02.21 |
HTML,이미지,동영상 파일 열리지 않고 다운로드되도록 만들기(수정) [21] | TheMics | 2004.02.19 |
한꼬마의 제로보드 활용법 (게시물 추출하기) [4] | 한꼬마 | 2004.02.17 |
[허접팀]랜덤 이미지 불러오기( +_+)/" [9] | 『처니리♂』 | 2004.02.12 |
간단한 랜덤 게시물 구하는 간단한 소스입니다. [5] | NS | 2004.02.12 |
cd키랑 비슷한거 만들기 -_-;; [12] | 추천대화상대 | 2004.02.11 |
많은 txt파일 db에 한번에 저장시키기 -_-;;(별 내용없으나 필요하신분은 보세요) [1] | 추천대화상대 | 2004.02.11 |
이미지 업로드시 자동으로 섬네일 이미지 만들어 주기 [2] | 장정식 | 2004.02.02 |
제로 카운터 ip 체크형에서 쿠키 체크 형으로 바꾸기 [8] | 정재원 | 2004.01.27 |
[초허접기초] 하드디스크 용량을 구해보자..!! [13] | SeePaGae | 2004.01.24 |
[초허접기초!!] PHP 가 무엇인고..?? 1탄.. [6] | SeePaGae | 2004.01.24 |
아이피를 숨겨보자 [5] | SeePaGae | 2004.01.23 |
(중복) 개인서버 운영하시는분들.. 좋은소스? [14] | SeePaGae | 2004.01.22 |
제로카운터 쉽게 설치하기 [26] | 대류 | 2004.01.17 |
제로보드 인크루드시 $DOCUMENT_ROOT 참조 [7] | 이경훈 | 2004.01.14 |
unset / isset 를 알아보자. [2] | 씨파개 | 2004.01.12 |
include에서 Failed opening 발생문제 [4] | 이경훈 | 2004.01.10 |
[팁&테크] 텍스트파일에서 디비 입력하기. [1] | 김영진 | 2004.01.09 |
GET으로 받는 변수가 하나일 때, 주소?변수값 사용하기 [5] | 버찌 | 2004.01.05 |