【问题标题】:Remove imgur from uploading images从上传图片中删除 imgur
【发布时间】:2019-06-17 01:52:47
【问题描述】:


几个月前,我的一个朋友在我在 laravel 创建的 cms 中添加了通过 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

最好的问候

【问题讨论】:

  • 如果我理解正确,您希望在将图像上传到您的服务器后从 Imgur 中删除它。如果是这种情况,那么您需要使用 Imgur 的 API 从 Imgur 的服务器中删除图像:api.imgur.com

标签: php laravel api backend imgur


【解决方案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]);
        }
    }

【讨论】:

  • 有效!但是当我上传一张图片时,他必须使用目录“uploads/profile”而不是他设置我“/var/www/awbeta/aw/public/uploads/profile/”并且显然图像没有像我可以解决的那样启动?
  • 为此,你必须改变两件事。首先,首先,将 public_path('/uploads/profile') 更改为 '/uploads/profile',其次,在使用图像 src 的位置,将它们更改为 {{asset($用户->image_profile)}}
  • 好的。 $destinationPath = public_path ('/uploads/profile');
  • 没什么,即使我改了public_patch总是会导致同一个目录“/var/www/awbeta/aw/public/uploads/profile/”我也改了镜像src<img class="img-responsive" id="imageProfile" src="{{asset($user->image_profile)}}">跨度>
  • 上传新照片并更新?它应该显示为your.domain/uploads/profile..
猜你喜欢
  • 2014-05-09
  • 2015-01-12
  • 2018-02-03
  • 1970-01-01
  • 2017-02-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
相关资源
最近更新 更多