Удалить imgur из загрузки изображений


Несколько месяцев назад мой друг добавил в мою cms, созданную в laravel, загрузку изображений через imgur, только то, что я хотел бы удалить, на cms однако изображения сохраняются (локально), я хотел бы удалить загрузка на imgur, и я хотел бы оставить изображения локально

public function imageProfile(Request $request)
    {
        $user = Auth::user();
        $rules = array(
            'profile-image' => 'required|image|mimes:jpeg,png,jpg,gif|max:8192|dimensions:min_width=160,min_height=160',
        );

        $customMessages = [
            'profile-image.required' => 'E\' richiesta una immagine per cambiare immagine di profilo.',
            'profile-image.image' => 'Devi inserire un immagine valida.',
            'profile-image.mimes' => 'L\'immagine inserita non ha un formato adatto.',
            'profile-image.dimensions' => 'L\'immagine deve essere minimo 160x160.',
        ];

        $validator = Validator::make(Input::all(), $rules, $customMessages);

        if ($validator->fails()) {
            return response()->json(['success' => false, 'error' => $this->validationErrorsToString($validator->errors())]);
        }

        if ($request->hasFile('profile-image')) {
            $number = mt_rand(1,1000000);
            $image = $request->file('profile-image');
            $name = $user->username.'-'.Carbon::now()->toDateString().'-'.$number.'.'.$image->getClientOriginalExtension();
            $destinationPath = public_path('/uploads/profile');
            $imagePath = $destinationPath. "/".  $name;
            $image->move($destinationPath, $name);      

            $image = Imgur::setHeaders([
            'headers' => [
                'authorization' => 'Client-ID MY CLIENT ID',
                'content-type' => 'application/x-www-form-urlencoded',
            ]
            ])->setFormParams([
                'form_params' => [
                    'image' => URL::to("/").'/uploads/profile/'. $name,
                ]
            ])->upload(URL::to("/").'/uploads/profile/'. $name);

            \File::delete('uploads/profile/' .$name);


            $user->image_profile = $image->link();
            $user->save();
            $html =  $image->link();



            return response()->json(['success' => true, 'html' => $html, 'image' => $image->link()]);
        }
    }

Мой сервер работает под управлением Ubuntu 16.04 + Laravel 5.5.

С уважением


person BoomToast    schedule 16.06.2019    source источник
comment
Если я правильно понимаю, вы хотите удалить изображение из Imgur после того, как оно будет загружено на ваш сервер. В этом случае вам нужно будет использовать API Imgur для удаления изображения с серверов Imgur: api.imgur.com< /а>   -  person zeterain    schedule 16.06.2019


Ответы (1)


Этот код загрузит фото только в ваш локальный каталог.

public function imageProfile(Request $request)
    {
        $user = Auth::user();
        $rules = array(
            'profile-image' => 'required|image|mimes:jpeg,png,jpg,gif|max:8192|dimensions:min_width=160,min_height=160',
        );

        $customMessages = [
            'profile-image.required' => 'E\' richiesta una immagine per cambiare immagine di profilo.',
            'profile-image.image' => 'Devi inserire un immagine valida.',
            'profile-image.mimes' => 'L\'immagine inserita non ha un formato adatto.',
            'profile-image.dimensions' => 'L\'immagine deve essere minimo 160x160.',
        ];

        $validator = Validator::make(Input::all(), $rules, $customMessages);

        if ($validator->fails()) {
            return response()->json(['success' => false, 'error' => $this->validationErrorsToString($validator->errors())]);
        }

        if ($request->hasFile('profile-image')) {
            $number = mt_rand(1,1000000);
            $image = $request->file('profile-image');
            $name = $user->username.'-'.Carbon::now()->toDateString().'-'.$number.'.'.$image->getClientOriginalExtension();
            $destinationPath = public_path('/uploads/profile');
            $imagePath = $destinationPath. "/".  $name;
            $image->move($destinationPath, $name);  

            // remove this commented portion
            // $image = Imgur::setHeaders([
            // 'headers' => [
            //     'authorization' => 'Client-ID MY CLIENT ID',
            //    'content-type' => 'application/x-www-form-urlencoded',
            // ]
            // ])->setFormParams([
            //     'form_params' => [
            //         'image' => URL::to("/").'/uploads/profile/'. $name,
            //     ]
            // ])->upload(URL::to("/").'/uploads/profile/'. $name);

            // \File::delete('uploads/profile/' .$name);


            // $user->image_profile = $image->link();
            // $user->save();
            // $html =  $image->link();

            // update this portion to

            $user->image_profile = $imagePath;
            $user->save();
            $html =  $imagePath;



            // return response()->json(['success' => true, 'html' => $html, 'image' => $image->link()]);
            // also update this portion to
            return response()->json(['success' => true, 'html' => $html, 'image' => $imagePath]);
        }
    }
person hasan05    schedule 16.06.2019
comment
Оно работает! Но когда я загружаю изображение, он должен взять каталог uploads/profile, вместо этого он устанавливает мне /var/www/awbeta/aw/public/uploads/profile/ и, очевидно, изображения не запускаются, как я могу решить? - person BoomToast; 16.06.2019
comment
для этого вы должны изменить 2 вещи. во-первых, во-первых, измените public_path('/uploads/profile') на '/uploads/profile', а во-вторых, если вы используете источник изображения, измените его на {{asset($ пользователь-›image_profile)}} - person hasan05; 16.06.2019
comment
Хорошо сделано. $destinationPath = public_path ('/uploads/profile'); - person BoomToast; 16.06.2019
comment
Ничего, даже если я изменю public_patch, он всегда ведет к одному и тому же каталогу /var/www/awbeta/aw/public/uploads/profile/. Я также изменил образ src <img class="img-responsive" id="imageProfile" src="{{asset($user->image_profile)}}"> - person BoomToast; 16.06.2019
comment
загрузить новое фото и обновить? Он должен отображаться как your.domain/uploads/profile.. - person hasan05; 16.06.2019
comment
Я не понимаю.. Я следовал твоим шагам $destinationPath = public_path ('/uploads/profile'); <img class="img-responsive" id="imageProfile" src="{{asset($user->image_profile)}}"> - person BoomToast; 16.06.2019
comment
очевидно, каталог изображений находится в /var/www/awbeta/aw/public/uploads/profile, но очевидно, что это каталог, недоступный через Интернет, он должен напрямую брать изображения в /uploads/profile - person BoomToast; 16.06.2019
comment
public_path ('/uploads/profile'); следует удалить. и будет '/uploads/profile' - person hasan05; 16.06.2019
comment
С $destinationPath = '/uploads/profile' Журналы выдают мне эту ошибку: [2019-06-16 20:10:48] production.ERROR: syntax error, unexpected '$imagePath' (T_VARIABLE) - person BoomToast; 16.06.2019
comment
Эта ошибка находится в строке 501, то есть: $imagePath = $destinationPath. "/". $name; - person BoomToast; 16.06.2019
comment
вы, должно быть, забыли, ; двоеточие. - person hasan05; 16.06.2019
comment
Большое спасибо, это работает! У меня была бы такая же проблема с крышкой профиля, не могли бы вы мне помочь? Я был бы очень признателен, система почти такая же, и я хотел бы сделать то же самое, что и изображение профиля, т.е. сохранить его локально - person BoomToast; 16.06.2019
comment
Я думаю, тебе стоит попробовать самой. У вас уже есть подходящий способ. Если вы потерпите неудачу тогда, следующий будет следующим. :) - person hasan05; 16.06.2019
comment
Привет @BoomToast, если этот или любой другой ответ решил ваш вопрос, рассмотрите возможность его принятия, нажав на галочку. Это показывает более широкому сообществу, что вы нашли решение, и повышает репутацию как отвечающего, так и вас самих. Нет никаких обязательств делать это. - person hasan05; 16.06.2019