From 160b0ea9ebbf18ee064b62bed02b46951ec22b92 Mon Sep 17 00:00:00 2001 From: bbx0 <39773919+bbx0@users.noreply.github.com> Date: Fri, 23 Feb 2024 13:24:31 +0100 Subject: [PATCH] Stream uploads to file --- controllers/FilesApiController.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/controllers/FilesApiController.php b/controllers/FilesApiController.php index 6703eaea..fbfa593e 100644 --- a/controllers/FilesApiController.php +++ b/controllers/FilesApiController.php @@ -109,9 +109,26 @@ class FilesApiController extends BaseApiController } $fileName = $this->checkFileName($args['fileName']); - $data = $request->getBody()->getContents(); - file_put_contents($this->getFilesService()->GetFilePath($args['group'], $fileName), $data); + if(false === $fileHandle = fopen($this->getFilesService()->GetFilePath($args['group'], $fileName), 'xb')) + { + throw new \Exception('Cannot create file'); + } + + $requestBody = $request->getBody(); + + while ($data = $requestBody->read(32768)) + { + if ( fwrite($fileHandle, $data) === false ) + { + throw new \Exception('Cannot write to file'); + } + } + + if ( fclose($fileHandle) === false ) + { + throw new \Exception('Failed to close file'); + } return $this->EmptyApiResponse($response); }