> 백엔드 개발 > PHP 튜토리얼 > PHP는 어떻게 재개 가능한 파일 다운로드를 구현할 수 있나요?

PHP는 어떻게 재개 가능한 파일 다운로드를 구현할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-07 11:10:17
원래의
930명이 탐색했습니다.

How Can PHP Implement Resumable File Downloads?

PHP 기반 파일 터널링으로 재개 가능한 다운로드

PHP가 파일 다운로드를 위한 프록시로 사용되는 이 시나리오에서 사용자는 문제에 직면합니다. 중단된 다운로드를 재개합니다. 이 문서의 목적은 이 문제를 해결하고 가능한 솔루션을 탐색하는 것입니다.

PHP에서 재개 가능한 다운로드 구현

재개 가능한 다운로드를 활성화하려면 처음에 부분 콘텐츠에 대한 서버의 지원을 전달해야 합니다. "Accept-Ranges: bytes" 헤더를 통해. 이후 요청에 "Range: bytes=x-y" 헤더(x와 y는 숫자 값을 나타냄)가 포함된 경우 요청된 범위를 추출하고 이에 따라 파일 전송을 조작해야 합니다.

다음 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);
로그인 후 복사

추가 참고사항

  • 코드 단일 범위만 요청된 것으로 가정합니다.
  • 간결함을 위해 오류 처리가 생략되었습니다.
  • 부분 콘텐츠 및 fread 함수에 대한 자세한 내용은 제공된 설명서를 참조하세요.

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

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