Просмотр исходного кода

Merge pull request #28802 from paulijar/enh/s3_seek_from_end

Support seeking also from the end of file on S3 storage
tags/v23.0.0beta1
Julius Härtl 2 лет назад
Родитель
Сommit
8e7f63b274
Аккаунт пользователя с таким Email не найден
1 измененных файлов: 10 добавлений и 1 удалений
  1. 10
    1
      lib/private/Files/Stream/SeekableHttpStream.php

+ 10
- 1
lib/private/Files/Stream/SeekableHttpStream.php Просмотреть файл

private $current; private $current;
/** @var int */ /** @var int */
private $offset = 0; private $offset = 0;
/** @var int */
private $length = 0;


private function reconnect(int $start) { private function reconnect(int $start) {
$range = $start . '-'; $range = $start . '-';
$content = trim(explode(':', $contentRange)[1]); $content = trim(explode(':', $contentRange)[1]);
$range = trim(explode(' ', $content)[1]); $range = trim(explode(' ', $content)[1]);
$begin = intval(explode('-', $range)[0]); $begin = intval(explode('-', $range)[0]);
$length = intval(explode('/', $range)[1]);


if ($begin !== $start) { if ($begin !== $start) {
return false; return false;
} }


$this->offset = $begin; $this->offset = $begin;
$this->length = $length;


return true; return true;
} }
} }
return $this->reconnect($this->offset + $offset); return $this->reconnect($this->offset + $offset);
case SEEK_END: case SEEK_END:
return false;
if ($this->length === 0) {
return false;
} elseif ($this->length + $offset === $this->offset) {
return true;
}
return $this->reconnect($this->length + $offset);
} }
return false; return false;
} }

Загрузка…
Отмена
Сохранить