【问题标题】:call to a member function getClientOriginalName() on null using laravel使用 laravel 在 null 上调用成员函数 getClientOriginalName()
【发布时间】:2020-04-15 19:42:48
【问题描述】:

当我尝试上传图片时,我不断收到以下错误。有谁知道如何解决这个问题?我对下一步该做什么感到困惑。

在 null 上调用成员函数 getClientOriginalName()

https://flareapp.io/share/dmkydl73#F42

控制器

public function singalprojectaction(Request $request)
{
    $validation = validator::make($request->all(), [
        'select_file_one' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        'select_file_Two' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        'select_file_Three' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        'select_file_Four' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        'select_file_Five' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    if ($validation->passes()) {
        $select_project = $request->get('select_project');
        $project_name = $request->get('project_name');
        $Client_name = $request->get('Client_name');
        $Completion_date = $request->get('Completion_date');
        $Duration = $request->get('Duration');
        $Description = $request->get('Description');
        $select_file_one = $request->file('select_file_one');
        $select_file_Two = $request->file('select_file_Two');
        $select_file_Three = $request->file('select_file_Three');
        $select_file_Four = $request->file('select_file_Four');
        $select_file_Five = $request->file('select_file_Five');

        $new_name_one = mt_rand().'.'.$select_file_one->getClientOriginalName();
        $select_file_one->move(public_path('projects'), $new_name_one);
        $new_name_Two = mt_rand().'.'.$select_file_Two->getClientOriginalName();
        $select_file_Two->move(public_path('projects'), $new_name_Two);
        $new_name_Three = mt_rand().'.'.$select_file_Three->getClientOriginalName();
        $select_file_Three->move(public_path('projects'), $new_name_Three);
        $new_name_Four = mt_rand().'.'.$select_file_Four->getClientOriginalName();
        $select_file_Four->move(public_path('projects'), $new_name_Four);
        $new_name_Five = mt_rand().'.'.$select_file_Five->getClientOriginalName();
        $select_file_Five->move(public_path('projects'), $new_name_Five);

        $query = DB::table('single_portfolio')->insert([
            'project_id' => $select_project, 'Project_name' => $project_name,
            'Client_Name' => $Client_name, 'Completion_date' => $Completion_date
            , 'Duration' => $Duration, 'Description' => $Description, 'image_one' => $new_name_one, 'image_two' =>
                $new_name_Two,
            'image_three' => $new_name_Three, 'image_four' => $new_name_Four, 'image_five' => $new_name_Five
        ]);

        if ($query) {
            return redirect()->back()->with('messages', 'Data Is Successfully Inserted');
        }

    }

    return redirect()->back();
}

【问题讨论】:

    标签: laravel laravel-validation laravel-formrequest


    【解决方案1】:

    据我所知,$request->file('select_file_Two'); 返回null;这意味着很可能没有为名称为select_file_Two 的输入选择任何文件,请确保名称的大小写相同,而不是select_file_two。 如果需要所有文件,您可以像这样向验证器添加required

     `require|image|mimes:jpeg,png,jpg,gif,svg|max:2048`
    

    或者如果是可选的,您可以像这样预先检查文件是否存在

    if(!is_null($select_file_one)){
      $new_name_one = rand() . '.' . $select_file_one->getClientOriginalName();
      $select_file_one->move(public_path('projects'), $new_name_one);
    }
    

    并对所有未发送的文件进行技能处理。

    这里还需要注意的是,您正在使用 rand() 生成新名称,这可能会及时覆盖文件。我建议像这样添加时间戳

    use Carbon\Carbon;
    $name = rand() . '_' . now()->timestamp . '.' . $image->getClientOriginalExtension();
    

    【讨论】:

      【解决方案2】:

      如果您的代码没问题,看起来是这样,大多数时候您是 html 表单。 看看你的表单,看看你的表单标签中是否包含enctype="multipart/form-data",否则文件不会被发送。孔表单部分应该是这样的:

          <form method="post" enctype="multipart/form-data" action="URL">
          </form>
      

      【讨论】:

        猜你喜欢
        • 2018-04-03
        • 2018-09-29
        • 2021-11-25
        • 1970-01-01
        • 2017-07-02
        • 2016-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多