FilesUploadService.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. /**
  31. * 上传BIM模型
  32. * @return array
  33. */
  34. public function uploadModels(): array
  35. {
  36. $files = $this->request->get("files", []);
  37. $items = [];
  38. foreach ($files as $file) {
  39. $item = $this->uploadFileWithPath($this->request, $file['pathname'], $file['title'], $file['size']);
  40. $items[] = $item;
  41. }
  42. $uploadedFiles = $this->storeFiles($items);
  43. return $uploadedFiles;
  44. }
  45. }