= $fileSize || $end >= $fileSize || $start > $end) { http_response_code(416); header("Content-Range: bytes */$fileSize"); die('Invalid range'); } $length = $end - $start + 1; // Send partial content headers http_response_code(206); header('Content-Type: ' . $mimeType); header('Accept-Ranges: bytes'); header("Content-Range: bytes $start-$end/$fileSize"); header("Content-Length: $length"); header('Cache-Control: public, max-age=86400'); // Output the requested range $fp = fopen($filePath, 'rb'); fseek($fp, $start); $bytesRemaining = $length; $bufferSize = 8192; while ($bytesRemaining > 0 && !feof($fp)) { $readSize = min($bufferSize, $bytesRemaining); echo fread($fp, $readSize); $bytesRemaining -= $readSize; flush(); } fclose($fp); } else { // No range requested - send full file header('Content-Type: ' . $mimeType); header('Accept-Ranges: bytes'); header("Content-Length: $fileSize"); header('Cache-Control: public, max-age=86400'); readfile($filePath); }