MediaController.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. $this->validate($request, [
  21. 'file' => function() {
  22. return [
  23. 'required',
  24. 'mimes:' . config('pixelfed.media_types'),
  25. 'max:' . config('pixelfed.max_photo_size'),
  26. ];
  27. },
  28. ]);
  29. $user = Auth::user();
  30. $photo = $request->file('file');
  31. $media = Media::whereUserId($user->id)
  32. ->whereProfileId($user->profile_id)
  33. ->whereNull('status_id')
  34. ->findOrFail($id);
  35. $fragments = explode('/', $media->media_path);
  36. $name = last($fragments);
  37. array_pop($fragments);
  38. $dir = implode('/', $fragments);
  39. $path = $photo->storeAs($dir, $name);
  40. $res = [];
  41. $res['url'] = URL::temporarySignedRoute(
  42. 'temp-media', now()->addHours(1), ['profileId' => $media->profile_id, 'mediaId' => $media->id]
  43. );
  44. ImageOptimize::dispatch($media);
  45. return $res;
  46. }
  47. }