【问题标题】:Request not recognized upload image请求无法识别上传图片
【发布时间】:2017-05-30 20:12:00
【问题描述】:

我在上传图片时遇到问题。我对所有用户都有一个默认图像。当我选择其他图像来更改默认图像时,它不起作用。不知何故, $request 未被识别。 UserController的代码:

use App\User;
use Illuminate\Http\Request;
use App\Http\Requests;
use Auth;
use Image;

public function updateAvatar(Request $request){
    $user = User::find(Auth::user()->id);
    if ($request->hasFile('avatar')){
        $avatar = $request->file('avatar');
        $filename=time() . '.' . $avatar->getClientOriginalExtension();

        if($user->avatar!='default.jgp'){
            $file = 'uploads/avatars/' . $user->avatar;
            if(File::exists($file)){
                unlink($file);
            }
        }
        Image::make($avatar)->save(public_path('/uploads/avatars/' . $filename));
        $user= Auth::user();
        $user->avatar=$filename;
        $user->save();
    }
    return view('pages.AfterLogin.Entidade.users.profile')->withUser(Auth::user());
}

【问题讨论】:

  • 你的表单是什么样子的?
  • 确保您使用的是 PUT/PATCH 方法
  • 我有post方法@LeaTano
  • @MMMTroy跨度>
  • POST 方法用于创建,PUT/PATCH 用于更新。尝试将method="post" 更改为method="put",请告诉我。

标签: php mysql laravel view image-uploading


【解决方案1】:

使用 dd($request);并显示屏幕截图并显示表单。

【讨论】:

  • 在哪里
  • 我都试过了。 multipart/form-data 和 x-www-form-urlencoded @Ravi
  • 我发现了。谢谢你们!
【解决方案2】:

我认为你的方法是正确的。试试这个:

use App\User;
use Illuminate\Http\Request;
use Auth;
use Image;

public function updateAvatar(Request $request){
    $user = User::find(Auth::user()->id);
    if ($request->hasFile('avatar')){
        $avatar = $request->file('avatar');
        $filename=time() . '.' . $avatar->getClientOriginalExtension();

        if($user->avatar!='default.jpg'){
            $file = 'uploads/avatars/' . $user->avatar;
            if(File::exists($file)){
                unlink($file);
            }
        }
        Image::make($avatar)->save(public_path('/uploads/avatars/' . $filename));
        $user= Auth::user();
        $user->avatar=$filename;
        $user->save();
    }
    return view('pages.AfterLogin.Entidade.users.profile')->withUser(Auth::user());
}

【讨论】:

  • 什么也没发生 :( @SSuhat
  • @JoãoCosta 您确定您的表单网址正确吗?尝试发布您的路线文件和表单标签
  • 路由文件:Route::get('/profile', 'UsersController@index'); Route::post('/profile', 'UsersController@updateAvatar'); 表格:<form enctype="multipart/form-data" action="profile" method="POST"> <label>Mudar foto</label> <input type="file" name="avatar"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="submit" class="btn btn-primary"> </form> @SSuhat
  • @JoãoCosta 如果您愿意,请尝试创建新的 laravel 项目并放入代码,看看是否能解决问题
【解决方案3】:

我认为你应该试试这个::

 use App\User;
 use Illuminate\Http\Request;
 use App\Http\Requests;
 use Auth;
 use Image;
 use Illuminate\Support\Facades\Input;

 public function updateAvatar(Request $request){
     $user = User::find(Auth::user()->id);
     if ($request->hasFile('avatar')){
         $avatar = Input::file('avatar');
         $filename=time() . '.' . $avatar->getClientOriginalExtension();

         if($user->avatar!='default.jgp'){
             $file = 'uploads/avatars/' . $user->avatar;
             if(File::exists($file)){
                 unlink($file);
             }
         }
         Image::make($avatar)->save(public_path('/uploads/avatars/' . $filename));
         $user= Auth::user();
         $user->avatar=$filename;
         $user->save();
     }
     return view('pages.AfterLogin.Entidade.users.profile')->withUser(Auth::user());
 }

希望这对你有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-19
    • 2021-11-16
    • 1970-01-01
    • 2015-09-28
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多