Upload4User.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App\Module\File;
  3. use App\Module\File\ModelsFileImg;
  4. use Illuminate\Http\UploadedFile;
  5. use Illuminate\Support\Facades\Storage;
  6. use Intervention\Image\ImageManager;
  7. use Intervention\Image\Drivers\Imagick\Driver;
  8. use Intervention\Image\Drivers\Gd\Driver as GdDriver;
  9. class Upload4User
  10. {
  11. public function __construct(protected int $user_id)
  12. {
  13. }
  14. /**
  15. * 上传图片
  16. *
  17. * @param UploadedFile $file
  18. * @return void
  19. */
  20. public function uploadImg(UploadedFile $file, $private = false)
  21. {
  22. $dir = Dir::getDir($this->user_id);
  23. // 重绘
  24. $upfilepath = $file->getRealPath();
  25. // create image manager with desired driver
  26. $manager = new ImageManager(new Driver());
  27. // read image from file system
  28. $image = $manager->read($upfilepath);
  29. // resize image proportionally
  30. $image->scale($image->width(), $image->height());
  31. $path = $dir . '/' . uniqid() . '.webp';
  32. // save modified image in new format
  33. $webpimg = $image->toWebp();
  34. $fileString = $webpimg->toString();
  35. $size = $webpimg->size();
  36. // dd($size);
  37. // 保存
  38. $disk = \App\Module\File\Storage::getStorage();
  39. $res = Storage::disk($disk)->put($path, $fileString);
  40. if ($res === false) {
  41. throw new \Exception('服务器错误,请联系客服.');
  42. }
  43. $f = new FileImg();
  44. $f->storage_disk = $disk;
  45. $f->path = $path;
  46. $f->user_id = $this->user_id;
  47. $f->o_name = $file->getClientOriginalName();
  48. $f->type1 = 'webp';
  49. $f->fsize = $size;
  50. $f->private = (int)$private;
  51. $f->re_id = 0;
  52. $f->re_type = '';
  53. $f->save();
  54. $f->refresh();
  55. return $f;
  56. }
  57. }