UploadController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Index\File;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Storage;
  7. use Intervention\Image\Facades\Image;
  8. use function MongoDB\BSON\toJSON;
  9. use yasmuru\LaravelTinify\Facades\Tinify;
  10. class UploadController extends Controller
  11. {
  12. /**
  13. * @param Request $request
  14. * @return \Illuminate\Http\JsonResponse
  15. */
  16. public function image(Request $request)
  17. {
  18. if ($request->hasFile('file')
  19. && $request->file('file')->isValid()
  20. && in_array($request->file->extension(), ["png", "jpg", "jpeg", "gif", "webp"])
  21. ) {
  22. $path = $request->file->store(date('Ymd'), config('vienblog.disks.article_image'));
  23. $url = Storage::disk(config('vienblog.disks.article_image'))->url($path);
  24. if (config('vienblog.setting.watermark.open')) {
  25. try {
  26. watermark(public_path($url), public_path($url), config('vienblog.setting.watermark.content'));
  27. }catch (\Exception $e) {}
  28. }
  29. if (env('TINIFY_APIKEY', '') && in_array($request->file->extension(), ["png", "jpg", "jpeg"])) {
  30. try {
  31. set_time_limit(300);
  32. $oldPath = public_path($url);
  33. $result = Tinify::fromFile($oldPath);
  34. $result->toFile(str_replace('.png', '.jpg', $oldPath));
  35. $this->save2db($url, $request->file->extension(), "article");
  36. return response()->json(['filename' => str_replace('.png', '.jpg', $url)]);
  37. } catch (\Exception $e){
  38. $this->save2db($url, $request->file->extension(), "article");
  39. return response()->json(['filename' => $url]);
  40. }
  41. }
  42. // $img = Image::make($oldPath);
  43. //
  44. // $thumbnailPath = pathinfo($oldPath, PATHINFO_DIRNAME).'/thumbnail/';
  45. //
  46. // if(!file_exists($thumbnailPath)){
  47. // mkdir ($thumbnailPath);
  48. // }
  49. //
  50. // $newPath = $thumbnailPath.pathinfo($oldPath, PATHINFO_FILENAME).'.jpg';
  51. //
  52. // $img->text('The quick brown fox jumps over the lazy dog.', 120, 100);
  53. //
  54. // $img->save($newPath, 100);
  55. $this->save2db($url, $request->file->extension(), "article");
  56. return response()->json(['filename' => $url]);
  57. }
  58. }
  59. private function save2db($url, $ext, $cate) {
  60. $file = new File();
  61. $file->path = $url;
  62. $file->extension = $ext;
  63. $file->category = $cate;
  64. $file->save();
  65. }
  66. /**
  67. * @param Request $request
  68. * @return \Illuminate\Http\JsonResponse
  69. */
  70. public function file(Request $request)
  71. {
  72. if ($request->hasFile('file')
  73. && $request->file('file')->isValid()
  74. ) {
  75. $path = $request->file->store(date('Ymd'), config('vienblog.disks.files'));
  76. $url = Storage::disk(config('vienblog.disks.files'))->url($path);
  77. return response()->json(['filename' => $url]);
  78. }
  79. }
  80. }