메뉴 건너뛰기

프로그램언어

조회 수 820 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
function fDown($file,$name,$downview,$speed,$limit)// 경로, 원파일명, 다운/보임, 다운속도, 속도제한여부

{
    if(!file_exists($file))
        die('File not exist!');
    $size = filesize($file);
    $name = rawurldecode($name);

    if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
        $UserBrowser = "Opera";
    elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
        $UserBrowser = "IE";
    else
        $UserBrowser = '';

    // 브라우저 정의
    $mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera')? 'application/octetstream' : 'application/octet-stream';
    @ob_end_clean(); // decrease cpu usage extreme
    Header('Content-Type: ' . $mime_type);
    Header('Content-Disposition: $downview; filename="'.$name.'"');
    Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    Header('Accept-Ranges: bytes');
    Header("Cache-control: private");
    Header('Pragma: private');

    // multipart-download and resume-download
    if(isset($_SERVER['HTTP_RANGE']))
    {
        list($a, $range) = explode("=",$_SERVER['HTTP_RANGE']);
        str_replace($range, "-", $range);
        $size2 = $size-1;
        $new_length = $size-$range;
        Header("HTTP/1.1 206 Partial Content");
        Header("Content-Length: $new_length");
        Header("Content-Range: bytes $range$size2/$size");
    } else {
        $size2=$size-1;
        Header("Content-Length: ".$size);
    }
    $chunksize = 1*(1024*$speed); // 속도제한값
    $this->bytes_send = 0;
    if ($file = fopen($file, 'rb'))
    {
        if(isset($_SERVER['HTTP_RANGE']))
            fseek($file, $range);
        while(!feof($file) and (connection_status()==0))
        {
            $buffer = fread($file, $chunksize);
            print($buffer);//echo($buffer); // is also possible
            flush();
            $this->bytes_send += strlen($buffer);
            if($limit) sleep(1); // 다운로드 속도제한
        }
        fclose($file);
    } else
        die('Error can not open file!!');
    if(isset($new_length))
        $size = $new_length;
    die();
    Header("Connection: close");
}

List of Articles
번호 제목 날짜 조회 수
260 13자리 timestamp 생성하기 file 2020.09.28 719
259 cUrl를 이용한 json 데이타 주고 받기 2020.09.28 1313
258 Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기 file 2020.09.23 618
257 네이버 지도 API를 이용한 주소를 좌표로 변환하기 (PHP) 2020.09.22 613
256 사업자등록번호 유효성 체크 2020.08.24 536
255 멀티 파일다운로드 꽁수로 구현하기 2020.06.19 668
» 파일 다운로드 함수(멀티 이어받기/속도제한) 2020.06.19 820
253 다중 파일을 zip으로 묶어받기 2020.06.19 717
252 사진이 회전되서 올라갈 경우 2020.05.25 844
251 PHP 버전이 낮아 imagerotate() 함수가 없을때 대신 사용하는 함수 2019.12.31 705
250 PHP 외부 XML 파싱 하기 2019.06.24 2011
249 주간단위 시작일에서 종료일을 셀렉트박스로 만들기. file 2019.04.29 1691
248 utf-8 문자열을 주어진 바이트로 자르기 2019.04.29 1442
247 PHP $_SERVER 함수 2019.02.25 1611
246 PHP에서 UTF와 EUC-KR 변환 2019.02.19 1612
245 PHP 가변변수 $$ file 2019.02.19 1521
244 PHP http 를 https 로 전환(redirect), http->https 2019.02.19 2255
243 input 자동완성기능 끄기 2019.02.19 1290
242 dddotag - 허용하지 않는 태그 걸러내기 2019.01.16 1913
241 애니메이션 gif 와 일반 gif 구분 하기 2019.01.16 1381
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved