웹마스터 팁
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
제목 | 글쓴이 | 날짜 |
---|---|---|
플래시 칼라피커 두번째 버전 [1] | 행복한고니 | 2005.03.16 |
플래쉬 갤러리 비슷한 자바스크립 갤러리 [13] | monozzang | 2005.04.04 |
풍선도움말 스크립트 [3] | 행복한고니 | 2005.04.11 |
타켓으로 페이지 이동하는 스크립트 [2] | 로크 | 2005.04.16 |
팝업창을 내용에 맞게 크기 자동조정하기 [2] | 김경수 | 2005.04.23 |
상태 표시줄 감지 (URL 가리고 내용 표시) 업그레이드 소스 [2] | ArⓒH | 2005.05.30 |
링크 점선 처리 onfocus=blur() [5] | woosh | 2005.06.06 |
마우스 오른쪽버튼 금지시키기스크립트 [5] | 박시현 | 2005.06.26 |
파일 업로드 버튼 이미지로 사용하기 [1] | 행복한고니 | 2005.06.29 |
SP2 팝업차단 무시하고 팝업띠우기?! [8] | 오길호 | 2005.07.23 |
미디어 플레이어? 난 곰플레이어야! [9] | 송재영 | 2005.07.24 |
자바스크립트 음악목록 랜덤 재생하기 | 만능천사 | 2005.08.14 |
Rain# 머문시간 나타내기 [상태창] | Rain | 2005.08.14 |
뉴스티커 [4] | beMax | 2005.08.26 |
배경색 랜덤으로 바꾸는 스크립트 [1] | ColonD | 2005.10.15 |
클릭으로 배경색 바꾸는 스크립트(수정) [1] | ColonD | 2005.10.16 |
2005/10/16 21:15 pm 형식으로 출력되는 시계 [5] | 웹-하루 | 2005.10.18 |
임의로 전체에서 몇개의 배너만 출력하기(오류 수정 ㅜ,.ㅜ) | ColonD | 2005.10.20 |
주소창에 경로감추기 [5] | ☆쭈야☆ | 2005.10.29 |
홈페이지 만드실때 방문자의 해상도가 걱정 되신다면 [5] | 한용 | 2005.11.11 |