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

파일 경로를 보호하면서 PHP에서 재개 가능한 다운로드를 어떻게 구현할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-12-26 11:50:10
원래의
853명이 탐색했습니다.

How Can I Implement Resumable Downloads in PHP While Protecting File Paths?

PHP 스크립팅에서 재개 가능한 다운로드

파일 경로를 보호하기 위해 PHP 스크립트를 통해 파일 다운로드를 터널링할 때 기본 방법이 지원하지 않는다는 것이 분명해졌습니다. 재개 가능한 다운로드. 이 문제를 해결하려면 다음 해결 방법을 고려하십시오.

재개 가능한 다운로드 지원의 핵심은 부분 콘텐츠 처리를 구현하는 것입니다. 이를 시작하려면 모든 응답에 Accept-Ranges: bytes 헤더를 보내 부분 콘텐츠에 대한 지원을 나타냅니다.

Range: bytes=x-y 헤더가 포함된 요청을 받으면 클라이언트가 지정한 범위를 구문 분석합니다. 파일을 열고 x 바이트를 찾아 요청된 y - x 바이트를 보냅니다. 또한 응답 상태를 HTTP/1.0 206 부분 콘텐츠로 설정합니다.

다음은 이 접근 방식을 느슨하게 따르는 기본 PHP 코드 조각입니다.

$filesize = filesize($file);

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

    $offset = intval($matches[1]);
    $length = intval($matches[2]) - $offset;
} else {
    $partialContent = false;
}

$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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