MediaController.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Auth, Storage, URL;
  5. use App\Media;
  6. use Image as Intervention;
  7. use App\Jobs\ImageOptimizePipeline\ImageOptimize;
  8. class MediaController extends Controller
  9. {
  10. public function __construct()
  11. {
  12. $this->middleware('auth');
  13. }
  14. public function index(Request $request)
  15. {
  16. //return view('settings.drive.index');
  17. }
  18. public function composeUpdate(Request $request, $id)
  19. {
  20. ini_set('memory_limit', '1024M');
  21. $this->validate($request, [
  22. 'file' => function() {
  23. return [
  24. 'required',
  25. 'mimes:' . config('pixelfed.media_types'),
  26. 'max:' . config('pixelfed.max_photo_size'),
  27. ];
  28. },
  29. ]);
  30. $user = Auth::user();
  31. $photo = $request->file('file');
  32. $media = Media::whereUserId($user->id)
  33. ->whereProfileId($user->profile_id)
  34. ->whereNull('status_id')
  35. ->findOrFail($id);
  36. $fragments = explode('/', $media->media_path);
  37. $name = last($fragments);
  38. array_pop($fragments);
  39. $dir = implode('/', $fragments);
  40. $path = $photo->storeAs($dir, $name);
  41. $res = [];
  42. $res['url'] = URL::temporarySignedRoute(
  43. 'temp-media', now()->addHours(1), ['profileId' => $media->profile_id, 'mediaId' => $media->id]
  44. );
  45. ImageOptimize::dispatch($media);
  46. return $res;
  47. }
  48. }