FilesUploadService.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Services\File\Upload;
  3. use Illuminate\Http\Request;
  4. class FilesUploadService
  5. {
  6. use FilesUploadTrait;
  7. protected int $filesSize = 0;
  8. protected ?ProgressBar $progressBar = null;
  9. public function __construct(protected Request $request)
  10. {
  11. $this->filesSize = $this->checkRequestData($this->request);
  12. if ($this->request->get("request_id")) {
  13. $this->progressBar = new ProgressBar($this->request->get("request_id"), $this->filesSize);
  14. }
  15. }
  16. public function upload(): array
  17. {
  18. $items = [];
  19. $fileNames = $this->request->get("file_names", []);
  20. foreach ($this->request->file("files") as $index => $file) {
  21. $item = $this->uploadFile($this->request, $file, $this->progressBar);
  22. $item['file']['title'] = $fileNames[$index] ?? $item['file']['title'];
  23. $items[] = $item;
  24. }
  25. $uploadedFiles = $this->storeFiles($items);
  26. $this->updateUsedStorageCapacity($this->filesSize);
  27. $this->progressBar?->completed();
  28. return $uploadedFiles;
  29. }
  30. }