UploadController.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 (env('TINIFY_APIKEY', '') && in_array($request->file->extension(), ["png", "jpg", "jpeg"])) {
  25. try {
  26. set_time_limit(300);
  27. $oldPath = public_path($url);
  28. $result = Tinify::fromFile($oldPath);
  29. $result->toFile(str_replace('.png', '.jpg', $oldPath));
  30. $this->save2db($url, $request->file->extension(), "article");
  31. return response()->json(['filename' => str_replace('.png', '.jpg', $url)]);
  32. } catch (\Exception $e){
  33. $this->save2db($url, $request->file->extension(), "article");
  34. return response()->json(['filename' => $url]);
  35. }
  36. }
  37. // $img = Image::make($oldPath);
  38. //
  39. // $thumbnailPath = pathinfo($oldPath, PATHINFO_DIRNAME).'/thumbnail/';
  40. //
  41. // if(!file_exists($thumbnailPath)){
  42. // mkdir ($thumbnailPath);
  43. // }
  44. //
  45. // $newPath = $thumbnailPath.pathinfo($oldPath, PATHINFO_FILENAME).'.jpg';
  46. //
  47. // $img->text('The quick brown fox jumps over the lazy dog.', 120, 100);
  48. //
  49. // $img->save($newPath, 100);
  50. $this->save2db($url, $request->file->extension(), "article");
  51. return response()->json(['filename' => $url]);
  52. }
  53. }
  54. private function save2db($url, $ext, $cate) {
  55. $file = new File();
  56. $file->path = $url;
  57. $file->extension = $ext;
  58. $file->category = $cate;
  59. $file->save();
  60. }
  61. /**
  62. * @param Request $request
  63. * @return \Illuminate\Http\JsonResponse
  64. */
  65. public function file(Request $request)
  66. {
  67. if ($request->hasFile('file')
  68. && $request->file('file')->isValid()
  69. ) {
  70. $path = $request->file->store(date('Ymd'), config('vienblog.disks.files'));
  71. $url = Storage::disk(config('vienblog.disks.files'))->url($path);
  72. return response()->json(['filename' => $url]);
  73. }
  74. }
  75. }