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

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

Linda Hamilton
Linda Hamilton원래의
2024-12-07 15:45:18723검색

How Can I Enable Resumable Downloads in My PHP File Transfer Script?

PHP 파일 전송 스크립트를 사용하여 재개 가능한 다운로드 활성화

소개

보안 목적으로 PHP 스크립트를 사용하여 파일을 전송할 때 다운로드 가능한 파일의 절대 경로 숨겨야 하는 경우가 많습니다. 그러나 기존 PHP 파일 전송 스크립트는 재개 가능한 다운로드를 지원하지 않아 연결 중단을 경험하는 최종 사용자에게 불편을 초래할 수 있습니다.

해결책: 재개 가능한 다운로드 지원

재개 가능한 다운로드를 활성화하려면 다음 단계를 수행하세요. 촬영:

  1. 허용 범위 보내기: 바이트 헤더: 이 헤더는 클라이언트에게 부분 콘텐츠가 지원됨을 알립니다.
  2. 부분 콘텐츠 요청 처리: Range: bytes=x-y 헤더가 포함된 요청을 받으면 범위를 구문 분석하고, 파일에서 원하는 오프셋을 찾아 요청한 바이트 범위를 보냅니다.
  3. 부분 콘텐츠 HTTP 상태 코드 설정: HTTP/1.0 206 부분 콘텐츠로 응답하여 성공적인 부분 전송을 나타냅니다.

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 ($offset > 0) {
    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);

이 스크립트는 먼저 부분 콘텐츠 요청이 이루어졌는지 확인합니다. 그렇다면 Range 헤더에서 범위를 구문 분석하고 파일에서 적절한 오프셋을 찾아 요청된 바이트 범위를 보냅니다. 또한 스크립트는 Accept-Ranges 헤더를 바이트로 설정하고 필요한 경우 부분 콘텐츠에 대한 적절한 HTTP 상태 코드를 보냅니다.

이러한 조치를 구현하면 PHP 파일 전송 스크립트를 사용하여 재개 가능한 다운로드가 지원되어 강력한 솔루션을 제공할 수 있습니다. 중단 후에도 재개할 수 있는 파일 전송을 위해.

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

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