FileUploadHelper.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Services\File\Upload;
  3. use App\Libraries\ChunkedUpload\ChunkedUploadFactory;
  4. use App\Models\File;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Http\UploadedFile;
  7. use Illuminate\Support\Facades\Auth;
  8. trait FileUploadHelper
  9. {
  10. protected function getFileExtension(UploadedFile $file): string
  11. {
  12. return $file->getClientOriginalExtension()
  13. ? $file->getClientOriginalExtension()
  14. : pathinfo($file->getClientOriginalName(), PATHINFO_EXTENSION);
  15. }
  16. protected function chunkUploadFileByCompany(
  17. UploadedFile $file, string $objectType, ?ProgressBar $progressBar = null
  18. ) {
  19. $extension = $this->getFileExtension($file);
  20. $pathname = ChunkedUploadFactory::make()->upload(
  21. $file,
  22. cos_upload_prefix(Auth::user()->company_id, $objectType),
  23. sprintf("%s.%s", md5(uniqid()), $extension),
  24. $progressBar
  25. );
  26. return [
  27. 'pathname' => $pathname,
  28. 'title' => $file->getClientOriginalName(),
  29. 'size' => $file->getSize(),
  30. 'extension' => $extension,
  31. 'object_type' => $objectType,
  32. 'created_by' => Auth::id(),
  33. 'company_id' => Auth::user()->company_id,
  34. ];
  35. }
  36. protected function fileToDatabase(array $fileInfo = [], int $objectId = null, array $fields = []): Model|\Illuminate\Database\Eloquent\Builder|null
  37. {
  38. if (! $fileInfo || ! $objectId) {
  39. return null;
  40. }
  41. return File::query()->create([
  42. ...$fileInfo,
  43. 'object_id' => $objectId,
  44. ...$fields,
  45. ]);
  46. }
  47. }