> 백엔드 개발 > PHP 튜토리얼 > PHP 파일 터널링에서 재개 가능한 다운로드를 어떻게 구현할 수 있습니까?

PHP 파일 터널링에서 재개 가능한 다운로드를 어떻게 구현할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-08 19:52:11
원래의
806명이 탐색했습니다.

How Can I Implement Resumable Downloads in PHP File Tunneling?

PHP 파일 터널링을 통한 다운로드 재개

PHP를 사용하여 파일 다운로드를 스트리밍하는 경우 사용자를 위해 재개 가능한 다운로드를 활성화하는 것이 바람직할 수 있습니다. 그러나 기본 PHP 스크립트 설정으로 인해 다운로드가 재개되지 않는 경우가 많습니다.

PHP로 재개 가능한 다운로드를 지원하려면 다음 단계를 따르십시오.

  1. Accept-Ranges 헤더 보내기:
    서버가 재개를 지원함을 나타내기 위해 모든 응답에 Accept-Ranges: bytes 헤더를 보냅니다. 다운로드.
  2. 범위 요청 처리:
    Range: bytes=x-y 헤더에 대한 수신 요청을 검사합니다. 여기서 x는 오프셋이고 y는 요청된 범위의 끝 바이트입니다.
  3. 파일 검색 및 전송 범위:
    파일을 열고 지정된 오프셋. 그런 다음 fread()를 사용하여 요청된 바이트 범위를 보냅니다.
  4. 부분 콘텐츠 헤더 설정:
    범위 요청의 경우 HTTP/1.0 206 부분 콘텐츠 헤더를 설정하고 콘텐츠 범위를 지정합니다. Content-Range: 바이트 x-y/filesize를 사용합니다.

이 단계를 구현하면 다음이 활성화되어야 합니다. PHP 파일 터널링 설정에서 재개 가능한 다운로드. 다음은 프로세스를 보여주는 PHP 코드 예입니다.

$filesize = filesize($file);

$offset = 0;
$length = $filesize;

if (isset($_SERVER['HTTP_RANGE'])) {
    preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches);

    $offset = intval($matches[1]);
    $length = intval($matches[2]) - $offset;
}

$file = fopen($file, 'r');
fseek($file, $offset);
$data = fread($file, $length);
fclose($file);

if ($partialContent) {
    header('HTTP/1.1 206 Partial Content');
    header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
}

header('Content-Type: ' . $ctype);
header('Content-Length: ' . $filesize);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Accept-Ranges: bytes');

print($data);
로그인 후 복사

위 내용은 PHP 파일 터널링에서 재개 가능한 다운로드를 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿