일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SetEnv
- SetKeyDelay
- SetControlDelay
- IfInString
- EnvMult
- MouseClick
- if(식)
- IF (식)
- if
- 배열
- Var:=식
- 식
- ControlSend
- Blocks
- EnvDiv
- SetTitleMatchMode
- DetectHiddenWindows
- EnvSet
- Menu
- IfWinExist
- 함수
- EnvSub
- EnvAdd
- autohotkey
- ControlGetText
- Threads
- StringGetPos
- 식의 설명
- SetMouseDelay
- API
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
PHP 파일다운로드(download) 구현 소스 본문
PHP 파일다운로드(download) 구현 소스
PHP에서 파일 다운로드 관련 소스로 앞에 있는 업로드 소스와 같이 사용하시면 되겠습니다.
역시 $dir 을 서버환경에 맞게 설정하셔야 합니다.
작동방식은 간단합니다. 게시판을 예를 들어 보면 게시물 식별번호를 넘겨주면 된답니다.
만약 이 다운로드 페이지명이 down.php 라면...
<a href="down.php?no=식별번호">다운받기</a>
이렇게 링크를 거시고 소스 중간부분에 주석처리 되어 있는 부분에 파일 정보를 로드 할 수 있는 소스를 자신의 환경에 맞게 추가 하시면 됩니다.
그럼 중간에 주석부분 설명을 잘 확인 하시기 바라면서 이만....^^/
<?
$dir = "upload/"; // 파일이 저장되어 있는 폴더 설정
function goBack($msg='', $url='') {
echo "<script>";
if($msg) echo 'alert("'.$msg.'");';
if($url) echo 'location.replace("'.$url.'");';
else echo 'history.go(-1);';
echo "</script>";
}
//▶ 외부에서 접근시에 에러 출력하는 부분으로 테스트 하실 때에는 주석처리 하시는 것이 좋습니다..^^
/*
if(!$_SERVER["HTTP_REFERER"] || !ereg(str_replace(".","\\.",$_SERVER["HTTP_HOST"]), $_SERVER["HTTP_REFERER"])) {
goBack("정상적인 방법으로 다운로드해 주세요.");
exit;
}
이 부분에 DB 에서 다운로드할 파일정보를 읽어옮
예: $row = mysql_fetch_array(mysql_query("select real_file_name, new_file_name from 테이블명 where no = '$no'"));
테스트를 위해선 $row[0] 와 $row[1] 을 지정해서 테스트하세요.
$row[0] = "testfile.jpg";
$row[1] = "6548d22b85bdc59a2145e7a1ee9b0788";
*/
$real_name = stripslashes($row[0]);
$save_name = $dir.stripslashes($row[1]);
//▶ 만약 파일이 없을 경우 에러출력
if(!file_exists($save_name)) {
goBack("다운로드할 파일을 찾을 수 없습니다.");
exit;
} else {// 파일이 있으면 다운로드
if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)", $_SERVER["HTTP_USER_AGENT"]) && !eregi("(Opera|Netscape)", $_SERVER["HTTP_USER_AGENT"])) {
Header("Content-type: application/octet-stream");
Header("Content-Length: ".filesize($save_name));
Header("Content-Disposition: attachment; filename=".$real_name);
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
} else {
Header("Content-type: file/unknown");
Header("Content-Length: ".filesize($save_name));
Header("Content-Disposition: attachment; filename=".$real_name);
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
$fp = fopen($save_name, "rb");
if(!fpassthru($fp)) fclose($fp);
}
?>
'프로그래밍 > SQL & PHP' 카테고리의 다른 글
[스크립트] 폼 전송된 한글 문자열이 깨질 때 (0) | 2008.12.18 |
---|---|
[DBMS] MySQL의 백업 및 복구 (0) | 2008.12.18 |
header no-cache (0) | 2008.12.16 |
[번역] Smarty QuickStart Guide (0) | 2008.12.16 |
php한글체크를 위한 정규표현식 (1) | 2008.12.16 |