Skip to content

Commit c77d9f5

Browse files
committed
Cleanup uploaded files for PSR-15 handlers
1 parent d789c22 commit c77d9f5

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/Event/Http/Psr15Handler.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public function __construct(RequestHandlerInterface $psr15Handler)
1616

1717
public function handleRequest(HttpRequestEvent $event, Context $context): HttpResponse
1818
{
19+
Psr7Bridge::cleanupUploadedFiles();
20+
1921
$request = Psr7Bridge::convertRequest($event, $context);
2022

2123
$response = $this->psr15Handler->handle($request);

src/Event/Http/Psr7Bridge.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
final class Psr7Bridge
2020
{
21+
private const UPLOADED_FILES_PREFIX = 'bref_upload_';
22+
2123
/**
2224
* Create a PSR-7 server request from an AWS Lambda HTTP event.
2325
*/
@@ -106,7 +108,7 @@ private static function parseBodyAndUploadedFiles(HttpRequestEvent $event): arra
106108
$parsedBody = [];
107109
foreach ($document->getParts() as $part) {
108110
if ($part->isFile()) {
109-
$tmpPath = tempnam(sys_get_temp_dir(), 'bref_upload_');
111+
$tmpPath = tempnam(sys_get_temp_dir(), self::UPLOADED_FILES_PREFIX);
110112
if ($tmpPath === false) {
111113
throw new RuntimeException('Unable to create a temporary directory');
112114
}
@@ -166,4 +168,19 @@ private static function parseKeyAndInsertValueInArray(array &$array, string $key
166168

167169
$pointer = $value;
168170
}
171+
172+
/**
173+
* Cleanup previously uploaded files.
174+
*/
175+
public static function cleanupUploadedFiles(): void
176+
{
177+
$tmpFiles = glob(sys_get_temp_dir() . '/' . self::UPLOADED_FILES_PREFIX . '*');
178+
if ($tmpFiles !== false) {
179+
foreach ($tmpFiles as $file) {
180+
if(is_file($file)) {
181+
unlink($file);
182+
}
183+
}
184+
}
185+
}
169186
}

0 commit comments

Comments
 (0)