Laravel 文件上传时无法识别文件错误“Call to a member function ”

我正在使用 Laravel、Ajax 和 Datatables 来管理我的信息,一切正常,但我需要将文件上传到其中。但我收到 Call to a member function store() on null。


这是控制器功能的代码(post 和 fetch):


    function postdata(Request $request)

    {

        $validation = Validator::make($request->all(), [


            'referencia'  => 'required',

            'tipo_equipo'  => 'required',

            'tipo_servicio'  => 'required',

            'id_reporte'  => 'required',


        ]);


        $error_array = array();

        $success_output = '';

        if ($validation->fails())

        {

            foreach($validation->messages()->getMessages() as $field_name => $messages)

            {

                $error_array[] = $messages;

            }

        }

        else

        {


            if($request->get('button_action') == 'update')

            {



                $servicio = Servicio::find($request->get('servicio_id'));

                $servicio->referencia = $request->get('referencia');

                $servicio->tipo_equipo = $request->get('tipo_equipo');

                $servicio->tipo_servicio = $request->get('tipo_servicio');

                $servicio->id_reporte = $request->get('id_reporte');

                $servicio->imagen_inicio = $request->file('imagen_inicio')->store('public/img/servicio');

                $servicio->imagen_fin = $request->get('imagen_fin');

                $servicio->pdf_reporte = $request->get('pdf_reporte');

                $servicio->save();

                $success_output = '<div class="alertaTables alert alert-success">Servicio Actualizado</div>';

            }

        }

        $output = array(

            'error'     =>  $error_array,

            'success'   =>  $success_output

        );

        echo json_encode($output);

    }




梦里花落0921
浏览 206回答 1
1回答

阿波罗的战车

它不允许您存储文件,因为文件无法发送到服务器,因为您使用 AJAX 发出请求,要通过 AJAX 发送文件,请尝试以下操作:$('#servicio_form').on('submit', function(event){&nbsp; &nbsp;event.preventDefault();&nbsp; &nbsp;// init formData and get files&nbsp; &nbsp;let formData = new FormData($('#servicio_form')[0]);&nbsp; &nbsp;let imagenInicio = $('#imagen_inicio')[0].files[0];&nbsp; &nbsp;let imagenFin= $('#imagen_fin')[0].files[0];&nbsp; &nbsp;let pdfReporte= $('#pdf_reporte')[0].files[0];&nbsp; &nbsp;// append files to formData&nbsp; &nbsp;formData.append('imagen_inicio', imagenInicio);&nbsp; &nbsp;formData.append('imagen_fin', imagenFin);&nbsp; &nbsp;formData.append('pdf_reporte', pdfReporte);&nbsp; &nbsp;// in AJAX disable contentType, processData and cache&nbsp; &nbsp;$.ajax({&nbsp; &nbsp; &nbsp; url:"{{ route('mis-servicios.postdata') }}",&nbsp; &nbsp; &nbsp; method:"POST",&nbsp; &nbsp; &nbsp; dataType:"json",&nbsp; &nbsp; &nbsp; data: formData,&nbsp; &nbsp; &nbsp; &nbsp;// change this and the following options&nbsp; &nbsp; &nbsp; contentType: false,&nbsp;&nbsp; &nbsp; &nbsp; processData: false,&nbsp; &nbsp; &nbsp; cache: false,&nbsp; &nbsp; &nbsp; success: function(data) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// your code...&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;});});
打开App,查看更多内容
随时随地看视频慕课网APP