웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
다운로드 이어 받기 및 전송속도 제한 구현
2006.12.11 00:12
www.webtr.co.kr/manualwww.webtr.co.kr
http://www.webtr.co.kr/Test.zip 와 같이 직접 파일을 링크할 경우에는 웹서버에서
RANGE 를 지원하여 이어 받기가 가능하지만 http://www.webtr.co.kr/download.php 와 같이 스크립트를 통해 다운로드시에는 아래와 같은 작업을 하셔야 합니다.
$storage = "./files"; // 저장할 디렉토리명
$filename = $_GET['filename']; // 파일명
$filesize = filesize($storage . "/". $filename); // 파일크기
$speed = 1000; // 제한속도(초당 1M 를 넘지 못하도록 합니다.)
$seek_start = 0;
$seek_end = 0;
if(isset($_SERVER['HTTP_RANGE'])) {
$seek_range = substr($_SERVER['HTTP_RANGE'] , 6);
$range = explode( '-', $seek_range);
if($range[0] > 0) { $seek_start = intval($range[0]); }
if($range[1] > 0) { $seek_end = intval($range[1]); }
}
$file = $storage . "/". $filename;
// 파일을 오픈 한다.
$fp = fopen($file, "rb");
// 파일 포인터 이동
fseek($fp,$seek_start);
// 다운로드 헤더를 보내고
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".$filesize-$seek_start);
header("Content-Disposition: filename=".$filename);
// 파일을 보내보자!!
while(!feof($fp)) {
set_time_limit(0);
echo fread($fp,round(1024*$speed));
flush();
sleep(1);
}
fclose($fp);
샘플보기 http://webtr.co.kr/manual/?id=download
http://www.webtr.co.kr/Test.zip 와 같이 직접 파일을 링크할 경우에는 웹서버에서
RANGE 를 지원하여 이어 받기가 가능하지만 http://www.webtr.co.kr/download.php 와 같이 스크립트를 통해 다운로드시에는 아래와 같은 작업을 하셔야 합니다.
$storage = "./files"; // 저장할 디렉토리명
$filename = $_GET['filename']; // 파일명
$filesize = filesize($storage . "/". $filename); // 파일크기
$speed = 1000; // 제한속도(초당 1M 를 넘지 못하도록 합니다.)
$seek_start = 0;
$seek_end = 0;
if(isset($_SERVER['HTTP_RANGE'])) {
$seek_range = substr($_SERVER['HTTP_RANGE'] , 6);
$range = explode( '-', $seek_range);
if($range[0] > 0) { $seek_start = intval($range[0]); }
if($range[1] > 0) { $seek_end = intval($range[1]); }
}
$file = $storage . "/". $filename;
// 파일을 오픈 한다.
$fp = fopen($file, "rb");
// 파일 포인터 이동
fseek($fp,$seek_start);
// 다운로드 헤더를 보내고
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".$filesize-$seek_start);
header("Content-Disposition: filename=".$filename);
// 파일을 보내보자!!
while(!feof($fp)) {
set_time_limit(0);
echo fread($fp,round(1024*$speed));
flush();
sleep(1);
}
fclose($fp);
샘플보기 http://webtr.co.kr/manual/?id=download
제목 | 글쓴이 | 날짜 |
---|---|---|
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (2 of 4) [4] | Dopesoul | 2002.12.18 |
[FreeBSD] qmail+mysql+vpopmail+qmailadmin 설치 [1] | DeX™ | 2002.11.26 |
제로보드 data 폴더 일괄적으로 소유권 변경 스크립트 [2] | 라지엘 | 2002.07.01 |
[알아서 나쁠것없는 10원짜리 팁!] 수십 수백명사용자의 일괄생성 방법! [6] | 임현 | 2002.05.09 |
다운로드 이어 받기 및 전송속도 제한 구현 [1] | 박원형 | 2006.12.11 |
[PHP 동영상강의] 32. 자료의 정렬순서를 바꿔보자. [8] | 서기 | 2006.01.11 |
나만의 미니홈 만들기 ㅡ 메모장 소스 | 예뜨락 | 2005.06.09 |
나만의 미니홈 만들기 ㅡ 간단한 최근글 불러오기 [6] | 예뜨락 | 2005.05.09 |
나만의 미니홈 만들기 ㅡ메뉴에 게시판 연결 [5] | 예뜨락 | 2004.12.17 |
나만의 미니홈 만들기 ㅡ view.php 파일과 제목링크 [9] | 예뜨락 | 2004.11.27 |
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성 [6] | 예뜨락 | 2004.11.26 |
여러 DB에서 최근 게시물 추출하기 위한 소스 입니다. [6] | NS | 2004.02.21 |
한꼬마의 제로보드 활용법 (게시물 추출하기) [4] | 한꼬마 | 2004.02.17 |
DB에서 받은 데이터 배열로 하나씩 뿌리기 | LetMeLove | 2003.12.09 |
제로보드회원의 포인트 랭킹 체크하기 sql 정리 [4] | 한꼬마 | 2003.11.26 |
회원 포인트 랭킹(중복 -_-a) [4] | weky | 2003.11.15 |
공지사항|일기장 4강 - notice.php 간단한 글보이기 | 시루바 | 2003.10.16 |
인터넷 사이트 , MS 오피스로 관리하기 3 공시사항 나타내기 [5] | 한꼬마 | 2003.09.24 |
PHP+MSSQL?(수정판) [11] | 씨파개 | 2003.05.10 |
데이터베이스, PHP를 만나면「알짜 사이트로 부활!」 [1] | .maya | 2003.04.18 |