Cake\Network\Response::_fileRange PHP Method

_fileRange() protected method

If an invalid range is requested a 416 Status code will be used in the response.
protected _fileRange ( Cake\Filesystem\File $file, string $httpRange ) : void
$file Cake\Filesystem\File The file to set a range on.
$httpRange string The range to use.
return void
    protected function _fileRange($file, $httpRange)
    {
        $fileSize = $file->size();
        $lastByte = $fileSize - 1;
        $start = 0;
        $end = $lastByte;
        preg_match('/^bytes\\s*=\\s*(\\d+)?\\s*-\\s*(\\d+)?$/', $httpRange, $matches);
        if ($matches) {
            $start = $matches[1];
            $end = isset($matches[2]) ? $matches[2] : '';
        }
        if ($start === '') {
            $start = $fileSize - $end;
            $end = $lastByte;
        }
        if ($end === '') {
            $end = $lastByte;
        }
        if ($start > $end || $end > $lastByte || $start > $lastByte) {
            $this->statusCode(416);
            $this->header(['Content-Range' => 'bytes 0-' . $lastByte . '/' . $fileSize]);
            return;
        }
        $this->header(['Content-Length' => $end - $start + 1, 'Content-Range' => 'bytes ' . $start . '-' . $end . '/' . $fileSize]);
        $this->statusCode(206);
        $this->_fileRange = [$start, $end];
    }