【问题标题】:Laravel: How can I edit user information and upload profile image at the same time?Laravel:如何同时编辑用户信息和上传头像?
【发布时间】:2020-08-15 13:18:04
【问题描述】:

我一直在尝试编辑用户信息并从同一个表单上传个人资料图片。 我可以使用下面的代码编辑用户信息,

ProfileController.php
public function index()
    {
        $user = Auth::user();
        return view('profile.profile', ['user' => $user]);
    }

    public function edit()
    {
        $user = Auth::user();
        return view('profile.editprofile', ['user' => $user]);
    }

    public function update(Request $request)
    {      
        $user_form = $request->all();
        $user = Auth::user();

        unset($user_form['_token']);

        $user->fill($user_form)->save();

        return redirect('/profile');
    }

但是,当我也尝试上传个人资料图片时(我将 profile_image 列添加到数据库中)并更改了这样的代码

ProfileController.php
public function index()
    {
        $user = Auth::user();
        return view('profile.profile', ['user' => $user]);
    }

    public function edit()
    {
        $user = Auth::user();
        return view('profile.editprofile', ['user' => $user]);
    }

    public function update(Request $request, User $user)
    {

        $user->id = $request->user()->id;
        $user->name = $request->name;
        $user->email = $request->email;

        if ($request->hasFile('image')) {
            if (is_file($user->image)) {
                Storage::delete('public/image/' . $user->image);
            }
            $path = $request->file('image')->store('public/image');
            $user->image = basename($path);
        }

        $user = Auth::user();

        $user->update();

        return redirect('/tests');
    }

没有任何内容被编辑或上传。我只会被重定向,不会显示任何错误。

任何帮助都将不胜感激,因为我尝试了多种方法都没有成功。

提前谢谢你。

【问题讨论】:

  • 我可以看看你的 HTML 表单吗?

标签: php database laravel


【解决方案1】:

你会因为这行而被重定向:

$user = Auth::user();

    $user->update();

    return redirect('/tests');

第一行是在 $user 变量中设置一个新值,下一行是在没有新值的情况下更新它!然后重定向到上一个网址

检查您的图片是否移至“public/image”

【讨论】:

    【解决方案2】:
    $user->name = $request->name;
    
    if (is_file($user->image)) {
                    Storage::delete('public/image/' . $user->image);
    }
    

    此代码是不必要的。谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2021-05-23
      相关资源
      最近更新 更多