웹마스터 팁
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
제목 | 글쓴이 | 날짜 |
---|---|---|
mysql 안쓰는 간단한 게시판. [20] | 제로저아 | 2007.07.15 |
주민등록번호 검사기 [7] | 이진혁 | 2007.05.18 |
PHP스터디시리즈_php프로그램의 기초_연산자1 [1] | 에아 | 2007.04.28 |
PHP스터디시리즈_php프로그램 기초1 [6] | 에아 | 2007.04.09 |
PHP스터디시리즈_APM과 PHP의시작 [1] | 에아 | 2007.04.09 |
아무이유없이 만든 파일 메모장-ㅠ-;; [7] | 한태종 | 2007.02.25 |
다운로드 이어 받기 및 전송속도 제한 구현 [1] | 박원형 | 2006.12.11 |
sajax.php 소스 코드 분석 (자세한 한글 주석) | 유창화 | 2006.11.28 |
간단하게 만들어본 프레임워크 [2] | 유창화 | 2006.11.27 |
[PHP 동영상강의] 48. 엑셀파일 db에 넣기, 동적 select 구현 [8] | 서기 | 2006.10.27 |
[PHP 동영상강의] 47. phpmyadmin 최신버젼 설치하기 [3] | 서기 | 2006.10.27 |
네이버 메인페지 플래시광고처럼 들갈때마다 바뀌게 하기. [3] | 좋은남자 | 2006.08.30 |
[팁] 웹언어 개발자를 위한 고객 미디어플레이어 에러해결법 | 배광한 | 2006.07.24 |
PHP로 PDF만들기 1 | 행복한고니 | 2006.06.17 |
GD2를 이용한 간단한 이미지버튼 만들기... | 마땅해 | 2006.06.13 |
50줄로 만드는 웹메모 PHP 소스입니다. (웹사이트 포스트잇) [3] | 김성대 | 2006.05.17 |
중복파일 검사 후 (숫자)달기... [4] | 한치근 | 2006.04.20 |
올블로그 명예의 전당글 가져오기 (캐쉬기능추가) [2] | 유창화 | 2006.04.17 |
올블로그(http://www.allblog.net/Home/) 명예의 전당글 가져오기 [2] | 유창화 | 2006.04.17 |
네이버 openapi 사용하여 쇼핑검색 만들기 [3] | 유창화 | 2006.04.13 |