Serezhaua
@Serezhaua
я не человек ,я функция

Как сделать в laravel?

Добрый день ) как сделать что бы при загрузке фотографий создавалась папка определенного id юзера который грузит фото ,тоесть будет так /avatars/1/и тута уже все его аватарки и при этом при загрузке сделать несколько копий фотографий ,а именно оригинал ,64x64 , 512x512 ,и присвоить им имя типо 5345u34534955439_512x - если 512 размер если 64 то 5345u34534955439_64x.jpg ,если оригинал то просто 5345u34534955439.jpg
вот уже готовый код для загрузки ,помогите переделать под мои нужны
public function Avatar(Request $request)
    {
        $userId = Auth::user()->id;
        $user = User::find($userId);
        $file = $request->file('file');
        $file->move(public_path() . '/avatars', md5(date('H-m-s')) . 'vs.jpg');
        $user->update([
            'avatar' => md5(date('H-m-s')) . 'vs.jpg'
        ]);
        //return redirect()->back();
        return back()->with('success', 'Вау,теперь ты с аватаркой ');
    }
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
Kulaxyz
@Kulaxyz
Могу лучше
Готовое решение)
$image = $request->file('avatar');
            $fileName = time() . '.' . $image->getClientOriginalExtension();

            $img1 = Image::make($image->getRealPath());
            $img1->stream(); // <-- Key point
            Storage::disk('local')->put('public/images/avatars/' .auth()->id() . '/' . $fileName.$image->getClientOriginalExtension(), $img1, 'public');

            $img2 = Image::make($image->getRealPath());
            $img2->resize(64, 64, function ($constraint) {
                $constraint->aspectRatio();
            });
            $img2->stream(); // <-- Key point
            Storage::disk('local')->put('public/images/avatars/' .auth()->id() . '/' . $fileName.'_x64'.'.'.$image->getClientOriginalExtension(), $img2, 'public');

            $img3 = Image::make($image->getRealPath());
            $img3->resize(300, 300, function ($constraint) {
                $constraint->aspectRatio();
            });
            $img3->stream(); // <-- Key point
            Storage::disk('local')->put('public/images/avatars/' .auth()->id() . '/' . $fileName.'_x300'.'.'.$image->getClientOriginalExtension(), $img3, 'public');


            $user->avatar = $fileName;
            $user->save();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@PiloTeZ
...
Надо найти плагин для ресайзинга изображений и используя оригинальное изображение сделать уменьшенные версии, сохранив под нужными путями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы