>백엔드 개발 >PHP 튜토리얼 >PHP 스크립트로 재개 가능한 다운로드를 활성화하려면 어떻게 해야 합니까?

PHP 스크립트로 재개 가능한 다운로드를 활성화하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-18 10:33:14865검색

How Can I Enable Resumable Downloads with a PHP Script?

PHP 스크립팅으로 재개 가능한 다운로드 지원

질문:
PHP 스크립트를 사용하여 다운로드 가능한 파일을 보내는 경우 , 최종 사용자는 다운로드를 재개할 수 없습니다. 이러한 솔루션으로 어떻게 재개 가능한 다운로드를 지원할 수 있습니까?

답변:

재개 가능한 다운로드를 활성화하려면 다음 단계를 따르십시오.

  1. Accept-Ranges 보내기: 바이트 헤더:

    • 이 헤더는 클라이언트에게 부분 콘텐츠를 지원함을 알립니다.
  2. 범위 헤더 처리:

    • 요청에 Range: bytes=x-y 헤더가 포함된 경우, 이를 구문 분석하여 요청된 범위를 결정합니다.
    • 파일을 열고 요청된 오프셋을 찾은 다음 요청된 데이터 길이를 읽습니다.
  3. 부분 콘텐츠 헤더 설정:

    • 요청이 부분 콘텐츠에 대한 것인 경우 (Range 헤더가 있음), 다음 헤더를 설정하십시오:

      • HTTP/1.1 206 Partial Content
      • Content-Range: bytes x-y/filesize
  4. 파일 데이터 보내기:

    • 요청된 데이터를 print를 사용하여 출력합니다. () 또는 유사합니다.

다음은 부분 콘텐츠 다운로드를 구현하는 방법을 보여주는 샘플 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 ($offset > 0) {
    header('HTTP/1.1 206 Partial Content');
    header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
}

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

print($data);

이 코드는 적절한 헤더를 설정하고 요청된 파일 데이터, 재개 가능한 다운로드를 지원합니다.

위 내용은 PHP 스크립트로 재개 가능한 다운로드를 활성화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.