diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 6ea9743c23..3b86af8492 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -21,6 +21,7 @@ use Utopia\Database\Validator\UID; use Utopia\Exception; use Utopia\Image\Image; use Utopia\Storage\Compression\Algorithms\GZIP; +use Utopia\Storage\Device\Local; use Utopia\Storage\Storage; use Utopia\Storage\Validator\File; use Utopia\Storage\Validator\FileExt; @@ -928,7 +929,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') throw new Exception('File not found', 404); } - $cache = new Cache(new Filesystem(APP_STORAGE_CACHE . '/app-' . $project->getId())); // Limit file number or size + $cache = new Cache(new Filesystem(APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId() . DIRECTORY_SEPARATOR . $bucketId . DIRECTORY_SEPARATOR . $fileId)); // Limit file number or size $data = $cache->load($key, 60 * 60 * 24 * 30 * 3/* 3 months */); if ($data) { @@ -1431,7 +1432,8 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId') ->inject('usage') ->inject('mode') ->inject('deviceFiles') - ->action(function ($bucketId, $fileId, $response, $dbForProject, $events, $audits, $usage, $mode, $deviceFiles) { + ->inject('project') + ->action(function ($bucketId, $fileId, $response, $dbForProject, $events, $audits, $usage, $mode, $deviceFiles, $project) { /** @var Appwrite\Utopia\Response $response */ /** @var Utopia\Database\Database $dbForProject */ /** @var Utopia\Database\Database $dbForProject */ @@ -1479,6 +1481,11 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId') } if ($deviceDeleted) { + //delete related cache + $cacheDir = APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId() . DIRECTORY_SEPARATOR . $bucketId . DIRECTORY_SEPARATOR . $fileId; + $deviceLocal = new Local($cacheDir); + $deviceLocal->delete($cacheDir); + if ($bucket->getAttribute('permission') === 'bucket') { $deleted = Authorization::skip(function () use ($dbForProject, $fileId, $bucketId) { return $dbForProject->deleteDocument('bucket_' . $bucketId, $fileId);