为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
梦里花落0921 2023-10-21 15:47:20
我正在使用 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);    }
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

它不允许您存储文件,因为文件无法发送到服务器,因为您使用 AJAX 发出请求,要通过 AJAX 发送文件,请尝试以下操作:


$('#servicio_form').on('submit', function(event){

   event.preventDefault();


   // init formData and get files

   let formData = new FormData($('#servicio_form')[0]);

   let imagenInicio = $('#imagen_inicio')[0].files[0];

   let imagenFin= $('#imagen_fin')[0].files[0];

   let pdfReporte= $('#pdf_reporte')[0].files[0];


   // append files to formData

   formData.append('imagen_inicio', imagenInicio);

   formData.append('imagen_fin', imagenFin);

   formData.append('pdf_reporte', pdfReporte);


   // in AJAX disable contentType, processData and cache

   $.ajax({

      url:"{{ route('mis-servicios.postdata') }}",

      method:"POST",

      dataType:"json",

      data: formData,       // change this and the following options

      contentType: false, 

      processData: false,

      cache: false,

      success: function(data) {

         // your code...

      }

   });

});


查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信