Merge pull request #7082 from nextcloud/12-6974
[stable12] Fix seeking on object storage
This commit is contained in:
commit
3cc7c03ddb
|
@ -456,8 +456,28 @@ class View {
|
||||||
@ob_end_clean();
|
@ob_end_clean();
|
||||||
$handle = $this->fopen($path, 'rb');
|
$handle = $this->fopen($path, 'rb');
|
||||||
if ($handle) {
|
if ($handle) {
|
||||||
if (fseek($handle, $from) === 0) {
|
|
||||||
$chunkSize = 8192; // 8 kB chunks
|
$chunkSize = 8192; // 8 kB chunks
|
||||||
|
$startReading = true;
|
||||||
|
|
||||||
|
if ($from !== 0 && $from !== '0' && fseek($handle, $from) !== 0) {
|
||||||
|
// forward file handle via chunked fread because fseek seem to have failed
|
||||||
|
|
||||||
|
$end = $from + 1;
|
||||||
|
while (!feof($handle) && ftell($handle) < $end) {
|
||||||
|
$len = $from - ftell($handle);
|
||||||
|
if ($len > $chunkSize) {
|
||||||
|
$len = $chunkSize;
|
||||||
|
}
|
||||||
|
$result = fread($handle, $len);
|
||||||
|
|
||||||
|
if ($result === false) {
|
||||||
|
$startReading = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($startReading) {
|
||||||
$end = $to + 1;
|
$end = $to + 1;
|
||||||
while (!feof($handle) && ftell($handle) < $end) {
|
while (!feof($handle) && ftell($handle) < $end) {
|
||||||
$len = $end - ftell($handle);
|
$len = $end - ftell($handle);
|
||||||
|
|
Loading…
Reference in New Issue