fix(previews): avoid large file downloads for remote movie storage

Prevent downloading entire movie files from remote storage (e.g., S3)
when the 'moov atom' is located at the end of the file.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
This commit is contained in:
Misha M.-Kupriyanov 2025-04-09 17:40:25 +02:00 committed by Mikhailo Matiyenko-Kupriyanov
parent 14868ac0ee
commit 4a924bf400

View file

@ -54,10 +54,15 @@ class Movie extends ProviderV2 {
$result = null;
if ($this->useTempFile($file)) {
// try downloading 5 MB first as it's likely that the first frames are present there
// in some cases this doesn't work for example when the moov atom is at the
// end of the file, so if it fails we fall back to getting the full file
$sizeAttempts = [5242880, null];
// Try downloading 5 MB first, as it's likely that the first frames are present there.
// In some cases this doesn't work, for example when the moov atom is at the
// end of the file, so if it fails we fall back to getting the full file.
// Unless the file is not local (e.g. S3) as we do not want to download the whole (e.g. 37Gb) file
if ($file->getStorage()->isLocal()) {
$sizeAttempts = [5242880, null];
} else {
$sizeAttempts = [5242880];
}
} else {
// size is irrelevant, only attempt once
$sizeAttempts = [null];