首页 > 解决方案 > 在 null enctype="multipart/form-data" 上调用成员函数 store()

问题描述

我正在做大学作业,但上传图片时遇到问题。

即使,我已经使用 enctype="multipart/form-data" 但仍然无法上传数据

如果我包含图像,结果将产生一个空白页,但如果不是,qrud 运行顺利

谁能指出我正确的方向?

谢谢。

控制器内部功能

 public function update(ProfilEditRequest $request) {

    $data = $request->all();

    if (isset($data['avatar'])) {
        $isImg = explode(".",  $data['avatar']);

        if ($isImg[sizeof($isImg)-1] == "png" ||
        $isImg[sizeof($isImg)-1] == "jpg" ||
        $isImg[sizeof($isImg)-1] == "jpeg" ||
        $isImg[sizeof($isImg)-1] == "svg"  ) {

            $path = $request->file($data['avatar'])->store('/public/assets/profil-img/'.Auth::user()->id.'/');

            $itemss =DB::table('users')
            ->where('id', Auth::user()->id)
            ->update([
                'email' => $data['email'],
                'name' => $data['name'],
                'img_url' => $data['avatar']
            ]);
        }else {
                return redirect('/profile/');
        }

        $item = user::findOrFail(Auth::user()->id);
        $item->update($data);

        return redirect('/');
        }

        $itemss =DB::table('users')
        ->where('id', Auth::user()->id)
        ->update([
            'email' => $data['email'],
            'name' => $data['name']
        ]);

        return redirect('/sell/');
    }

这是我的html表单

  <form method="GET" action="{{url('profil/update/')}}"
    enctype="multipart/form-data" >
    @csrf  
    <!--input type="number" value=""><br>-->
    <label for="email" >email</label><br>
    <input type="email" size="60" name="email" value="{{Auth::user()->email}}" required>  <br><br>

    <label for="name">nama</label><br>
    <input type="text" size="60" name="name" min="1" value="{{Auth::user()->name}}" required><br><br>

    <label for="avatar">Select new profil picture</label>
    <input type="file"
    name="avatar" id="avatar" width="48" height="48"> <br><br><br>

    <input class="btn btn-primary"type="submit">
    <a href="{{url('/profil/')}}" class="btn btn-secondary">Cancel</a>

标签: laravel

解决方案


为了调试这种情况,您必须在每个步骤中监视代码以查看错误的确切位置,因此您可以通过类似的方式获取每个代码行的结果dd($whatever_want_to see)

如果你被运行$request->file($data['avatar'])会看到它的价值并且知道这是我的错

正如评论中提到的那样尝试类似

 public function update(Request $request) {

    $data = $request->all();

    if (isset($request->file('avatar'))) {
        $isImg = explode(".",  $data['avatar']);

        if ($isImg[sizeof($isImg)-1] == "png" ||
           $isImg[sizeof($isImg)-1] == "jpg" ||
           $isImg[sizeof($isImg)-1] == "jpeg" ||
           $isImg[sizeof($isImg)-1] == "svg"  ) {

                  $path = $request->file('avatar')->store('/public/assets/profil-img/'.Auth::user()->id.'/');

           //rest of your code

推荐阅读