diff --git a/modules/backend/controllers/Files.php b/modules/backend/controllers/Files.php index 2ac62a722..51fcded78 100644 --- a/modules/backend/controllers/Files.php +++ b/modules/backend/controllers/Files.php @@ -77,11 +77,18 @@ class Files extends Controller if (empty($path)) { $path = $file->getDiskPath(); } - $expires = now()->addSeconds(Config::get('cms.storage.uploads.temporaryUrlTTL', 3600)); - $url = Cache::remember('backend.file:' . $path, $expires, function () use ($disk, $path, $expires) { - return $disk->temporaryUrl($path, $expires); - }); + // Check to see if the URL has already been generated + $pathKey = 'backend.file:' . $path; + $url = Cache::get($pathKey); + + // The AWS S3 storage drivers will return a valid temporary URL even if the file does not exist + if (is_null($url) && $disk->exists($path)) { + $expires = now()->addSeconds(Config::get('cms.storage.uploads.temporaryUrlTTL', 3600)); + $url = Cache::remember($pathKey, $expires, function () use ($disk, $path, $expires) { + return $disk->temporaryUrl($path, $expires); + }); + } } return $url;