From d31d112e8591a642464cd369618bcce92b093576 Mon Sep 17 00:00:00 2001 From: Paramtamtam <7326800+tarampampam@users.noreply.github.com> Date: Thu, 10 Feb 2022 21:35:44 +0500 Subject: [PATCH 1/8] Listener for removing temporary files, which was created during uploading --- CHANGELOG.md | 4 ++ config/octane.php | 2 +- src/Listeners/CleanupUploadedFiles.php | 32 ++++++++++++ tests/Listeners/CleanupUploadedFilesTest.php | 52 ++++++++++++++++++++ 4 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/Listeners/CleanupUploadedFiles.php create mode 100644 tests/Listeners/CleanupUploadedFilesTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 75ff0ff3c..ed7f8795f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased](https://github.com/laravel/octane/compare/v1.2.1...1.x) +### Changed + +- Removes temporary files, which was created during uploading _(should be enabled manually)_ + ## [v1.2.1](https://github.com/laravel/octane/compare/v1.2.1...v1.2.1) - 2022-02-08 ### Changed diff --git a/config/octane.php b/config/octane.php index 20007c7ac..68d7dfe75 100644 --- a/config/octane.php +++ b/config/octane.php @@ -78,7 +78,7 @@ ], RequestTerminated::class => [ - // + // \Laravel\Octane\Listeners\CleanupUploadedFiles::class, ], TaskReceived::class => [ diff --git a/src/Listeners/CleanupUploadedFiles.php b/src/Listeners/CleanupUploadedFiles.php new file mode 100644 index 000000000..2ddc781f3 --- /dev/null +++ b/src/Listeners/CleanupUploadedFiles.php @@ -0,0 +1,32 @@ +request->files->all() as $file) { + if ($file instanceof \SplFileInfo) { + if (\is_string($path = $file->getRealPath())) { + \clearstatcache(true, $path); + + if (\is_file($path)) { + \unlink($path); + } + } + } + } + } +} diff --git a/tests/Listeners/CleanupUploadedFilesTest.php b/tests/Listeners/CleanupUploadedFilesTest.php new file mode 100644 index 000000000..9684a3e95 --- /dev/null +++ b/tests/Listeners/CleanupUploadedFilesTest.php @@ -0,0 +1,52 @@ +files->add([ + new UploadedFile($file1path, Str::random()), + new UploadedFile($file2path, Str::random()), + new UploadedFile($file3path, Str::random()), + ]); + + $this->assertTrue(\rename($file3path, $file3newPath = $file3path . Str::random())); + + $this->assertFileExists($file1path); + $this->assertFileExists($file2path); + $this->assertFileExists($file3newPath); + + $event = new \stdClass(); + $event->request = $request; + + (new CleanupUploadedFiles)->handle($event); + + $this->assertFileDoesNotExist($file1path); + $this->assertFileDoesNotExist($file2path); + $this->assertFileExists($file3newPath); // still exists + } finally { + foreach ([$file1path, $file2path, $file3newPath] as $fileName) { + if (\is_file($fileName)) { + \unlink($fileName); + } + } + } + } +} From 43a43febfc8b0f390da4978f14c69b129ebd03b7 Mon Sep 17 00:00:00 2001 From: Paramtamtam <7326800+tarampampam@users.noreply.github.com> Date: Thu, 10 Feb 2022 21:38:02 +0500 Subject: [PATCH 2/8] cs fixes --- src/Listeners/CleanupUploadedFiles.php | 2 +- tests/Listeners/CleanupUploadedFilesTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Listeners/CleanupUploadedFiles.php b/src/Listeners/CleanupUploadedFiles.php index 2ddc781f3..9210248e3 100644 --- a/src/Listeners/CleanupUploadedFiles.php +++ b/src/Listeners/CleanupUploadedFiles.php @@ -12,7 +12,7 @@ class CleanupUploadedFiles /** * Handle the event. * - * @param mixed $event + * @param mixed $event * @return void */ public function handle($event): void diff --git a/tests/Listeners/CleanupUploadedFilesTest.php b/tests/Listeners/CleanupUploadedFilesTest.php index 9684a3e95..7890aec75 100644 --- a/tests/Listeners/CleanupUploadedFilesTest.php +++ b/tests/Listeners/CleanupUploadedFilesTest.php @@ -4,8 +4,8 @@ use Illuminate\Support\Str; use Laravel\Octane\Tests\TestCase; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\File\UploadedFile; +use Symfony\Component\HttpFoundation\Request; /** * @covers \Laravel\Octane\Listeners\CleanupUploadedFiles @@ -27,7 +27,7 @@ public function test_files_removed() new UploadedFile($file3path, Str::random()), ]); - $this->assertTrue(\rename($file3path, $file3newPath = $file3path . Str::random())); + $this->assertTrue(\rename($file3path, $file3newPath = $file3path.Str::random())); $this->assertFileExists($file1path); $this->assertFileExists($file2path); From 103d051bab809b58d51a847dc05426b4c22a0c7f Mon Sep 17 00:00:00 2001 From: Paramtamtam <7326800+tarampampam@users.noreply.github.com> Date: Thu, 10 Feb 2022 21:39:36 +0500 Subject: [PATCH 3/8] Changelog updated --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed7f8795f..6fe93e38b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Changed -- Removes temporary files, which was created during uploading _(should be enabled manually)_ +- Removes temporary files, which was created during uploading _(should be enabled manually)_ ([#477](https://github.com/laravel/octane/pull/477)) ## [v1.2.1](https://github.com/laravel/octane/compare/v1.2.1...v1.2.1) - 2022-02-08 From 9e0bac18026e4539da045e26a1de469cb99c4c8c Mon Sep 17 00:00:00 2001 From: Paramtamtam <7326800+tarampampam@users.noreply.github.com> Date: Thu, 10 Feb 2022 21:42:24 +0500 Subject: [PATCH 4/8] Changelog updated --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fe93e38b..172fa65f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Changed -- Removes temporary files, which was created during uploading _(should be enabled manually)_ ([#477](https://github.com/laravel/octane/pull/477)) +- Listener for removing temporary files, which was created during uploading _(should be enabled manually)_ ([#477](https://github.com/laravel/octane/pull/477)) ## [v1.2.1](https://github.com/laravel/octane/compare/v1.2.1...v1.2.1) - 2022-02-08 From e1fd7d99c0d2f8bca015f11096ba583e32a91bd9 Mon Sep 17 00:00:00 2001 From: Paramtamtam <7326800+tarampampam@users.noreply.github.com> Date: Thu, 10 Feb 2022 21:42:42 +0500 Subject: [PATCH 5/8] Changelog updated --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 172fa65f9..293169498 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## [Unreleased](https://github.com/laravel/octane/compare/v1.2.1...1.x) -### Changed +### Added - Listener for removing temporary files, which was created during uploading _(should be enabled manually)_ ([#477](https://github.com/laravel/octane/pull/477)) From 8cc2e94857abde5952f02ac4896e83d0e8d99ec4 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 10 Feb 2022 16:20:43 -0600 Subject: [PATCH 6/8] add files --- CHANGELOG.md | 2 +- config/octane.php | 3 +- src/Listeners/CleanupUploadedFiles.php | 32 ------------------- src/Listeners/PruneUploadedFiles.php | 31 ++++++++++++++++++ ...lesTest.php => PruneUploadedFilesTest.php} | 7 ++-- 5 files changed, 38 insertions(+), 37 deletions(-) delete mode 100644 src/Listeners/CleanupUploadedFiles.php create mode 100644 src/Listeners/PruneUploadedFiles.php rename tests/Listeners/{CleanupUploadedFilesTest.php => PruneUploadedFilesTest.php} (88%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 293169498..c6e58e69a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Added -- Listener for removing temporary files, which was created during uploading _(should be enabled manually)_ ([#477](https://github.com/laravel/octane/pull/477)) +- Listener for removing temporary files which were created during uploading _(must be enabled manually for existing applications)_ ([#477](https://github.com/laravel/octane/pull/477)) ## [v1.2.1](https://github.com/laravel/octane/compare/v1.2.1...v1.2.1) - 2022-02-08 diff --git a/config/octane.php b/config/octane.php index 68d7dfe75..ca91b6416 100644 --- a/config/octane.php +++ b/config/octane.php @@ -16,6 +16,7 @@ use Laravel\Octane\Listeners\EnsureUploadedFilesAreValid; use Laravel\Octane\Listeners\EnsureUploadedFilesCanBeMoved; use Laravel\Octane\Listeners\FlushTemporaryContainerInstances; +use Laravel\Octane\Listeners\PruneUploadedFiles; use Laravel\Octane\Listeners\ReportException; use Laravel\Octane\Listeners\StopWorkerIfNecessary; use Laravel\Octane\Octane; @@ -78,7 +79,7 @@ ], RequestTerminated::class => [ - // \Laravel\Octane\Listeners\CleanupUploadedFiles::class, + // PruneUploadedFiles::class, ], TaskReceived::class => [ diff --git a/src/Listeners/CleanupUploadedFiles.php b/src/Listeners/CleanupUploadedFiles.php deleted file mode 100644 index 9210248e3..000000000 --- a/src/Listeners/CleanupUploadedFiles.php +++ /dev/null @@ -1,32 +0,0 @@ -request->files->all() as $file) { - if ($file instanceof \SplFileInfo) { - if (\is_string($path = $file->getRealPath())) { - \clearstatcache(true, $path); - - if (\is_file($path)) { - \unlink($path); - } - } - } - } - } -} diff --git a/src/Listeners/PruneUploadedFiles.php b/src/Listeners/PruneUploadedFiles.php new file mode 100644 index 000000000..86b8b598c --- /dev/null +++ b/src/Listeners/PruneUploadedFiles.php @@ -0,0 +1,31 @@ +request->files->all() as $file) { + if ($file instanceof SplFileInfo) { + if (! is_string($path = $file->getRealPath())) { + continue; + } + + clearstatcache(true, $path); + + if (is_file($path)) { + unlink($path); + } + } + } + } +} diff --git a/tests/Listeners/CleanupUploadedFilesTest.php b/tests/Listeners/PruneUploadedFilesTest.php similarity index 88% rename from tests/Listeners/CleanupUploadedFilesTest.php rename to tests/Listeners/PruneUploadedFilesTest.php index 7890aec75..7a76894e2 100644 --- a/tests/Listeners/CleanupUploadedFilesTest.php +++ b/tests/Listeners/PruneUploadedFilesTest.php @@ -3,14 +3,15 @@ namespace Laravel\Octane\Listeners; use Illuminate\Support\Str; +use Laravel\Octane\Listeners\PruneUploadedFiles; use Laravel\Octane\Tests\TestCase; use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Request; /** - * @covers \Laravel\Octane\Listeners\CleanupUploadedFiles + * @covers \Laravel\Octane\Listeners\PruneUploadedFiles */ -class CleanupUploadedFilesTest extends TestCase +class PruneUploadedFilesTest extends TestCase { public function test_files_removed() { @@ -36,7 +37,7 @@ public function test_files_removed() $event = new \stdClass(); $event->request = $request; - (new CleanupUploadedFiles)->handle($event); + (new PruneUploadedFiles)->handle($event); $this->assertFileDoesNotExist($file1path); $this->assertFileDoesNotExist($file2path); From 4cdc52a44fa4511d20e491b6ae5fc1dcc96e121e Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 10 Feb 2022 16:22:08 -0600 Subject: [PATCH 7/8] simplify code --- src/Listeners/PruneUploadedFiles.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Listeners/PruneUploadedFiles.php b/src/Listeners/PruneUploadedFiles.php index 86b8b598c..f45938eb3 100644 --- a/src/Listeners/PruneUploadedFiles.php +++ b/src/Listeners/PruneUploadedFiles.php @@ -15,16 +15,15 @@ class PruneUploadedFiles public function handle($event): void { foreach ($event->request->files->all() as $file) { - if ($file instanceof SplFileInfo) { - if (! is_string($path = $file->getRealPath())) { - continue; - } + if (! $file instanceof SplFileInfo || + ! is_string($path = $file->getRealPath())) { + continue; + } - clearstatcache(true, $path); + clearstatcache(true, $path); - if (is_file($path)) { - unlink($path); - } + if (is_file($path)) { + unlink($path); } } } From b342831fba298deecd7e4dd5d564614e947963bf Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 10 Feb 2022 16:23:38 -0600 Subject: [PATCH 8/8] rename again --- config/octane.php | 4 ++-- .../{PruneUploadedFiles.php => FlushUploadedFiles.php} | 2 +- ...neUploadedFilesTest.php => FlushUploadedFilesTest.php} | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) rename src/Listeners/{PruneUploadedFiles.php => FlushUploadedFiles.php} (95%) rename tests/Listeners/{PruneUploadedFilesTest.php => FlushUploadedFilesTest.php} (88%) diff --git a/config/octane.php b/config/octane.php index ca91b6416..818ee7036 100644 --- a/config/octane.php +++ b/config/octane.php @@ -16,7 +16,7 @@ use Laravel\Octane\Listeners\EnsureUploadedFilesAreValid; use Laravel\Octane\Listeners\EnsureUploadedFilesCanBeMoved; use Laravel\Octane\Listeners\FlushTemporaryContainerInstances; -use Laravel\Octane\Listeners\PruneUploadedFiles; +use Laravel\Octane\Listeners\FlushUploadedFiles; use Laravel\Octane\Listeners\ReportException; use Laravel\Octane\Listeners\StopWorkerIfNecessary; use Laravel\Octane\Octane; @@ -79,7 +79,7 @@ ], RequestTerminated::class => [ - // PruneUploadedFiles::class, + // FlushUploadedFiles::class, ], TaskReceived::class => [ diff --git a/src/Listeners/PruneUploadedFiles.php b/src/Listeners/FlushUploadedFiles.php similarity index 95% rename from src/Listeners/PruneUploadedFiles.php rename to src/Listeners/FlushUploadedFiles.php index f45938eb3..2c18ce21d 100644 --- a/src/Listeners/PruneUploadedFiles.php +++ b/src/Listeners/FlushUploadedFiles.php @@ -4,7 +4,7 @@ use SplFileInfo; -class PruneUploadedFiles +class FlushUploadedFiles { /** * Handle the event. diff --git a/tests/Listeners/PruneUploadedFilesTest.php b/tests/Listeners/FlushUploadedFilesTest.php similarity index 88% rename from tests/Listeners/PruneUploadedFilesTest.php rename to tests/Listeners/FlushUploadedFilesTest.php index 7a76894e2..42fbf72a6 100644 --- a/tests/Listeners/PruneUploadedFilesTest.php +++ b/tests/Listeners/FlushUploadedFilesTest.php @@ -3,15 +3,15 @@ namespace Laravel\Octane\Listeners; use Illuminate\Support\Str; -use Laravel\Octane\Listeners\PruneUploadedFiles; +use Laravel\Octane\Listeners\FlushUploadedFiles; use Laravel\Octane\Tests\TestCase; use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Request; /** - * @covers \Laravel\Octane\Listeners\PruneUploadedFiles + * @covers \Laravel\Octane\Listeners\FlushUploadedFiles */ -class PruneUploadedFilesTest extends TestCase +class FlushUploadedFilesTest extends TestCase { public function test_files_removed() { @@ -37,7 +37,7 @@ public function test_files_removed() $event = new \stdClass(); $event->request = $request; - (new PruneUploadedFiles)->handle($event); + (new FlushUploadedFiles)->handle($event); $this->assertFileDoesNotExist($file1path); $this->assertFileDoesNotExist($file2path);