Estoy tratando de hacer un sistema de carga de archivos en AWS basado en laravel con ajax. Estoy hablando de un sistema de análisis de currículums en el que utilicé la API de apilayer para analizar el CV de pdf a json.
Traté de crear un sistema de carga de archivos donde los archivos se cargan en aws (esto funciona) y luego obtengo la URL del archivo cargado para enviar a la API.
public function store(Request $request) { $request->validate([ 'file' => 'required|mimes:doc,docx,pdf|max:2048', ]); $fileName = time() . '.' . $request->file->extension(); $path = $request->file->storeAs('file', $fileName, 's3'); CVupload::create(['name' => $fileName]); $urlcv = Storage::disk('s3')->url($path); return response()->json("$urlcv"); } }Todo está bien, pero cuando la API se ejecuta desde el siguiente código, recibo el error:
Error del cliente: POST https://api.apilayer.com/resume_parser/url?url=https://--.s3.eu-central-1.amazonaws.com/file/-- resultó en una respuesta 403 Forbidden : {"message":"No puedes consumir este servicio"}
Veo que la solicitud es POST y tengo que hacer una SOLICITUD GET. ¿Tal vez es un error en Ajax Script?
<script type="text/javascript"> $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); $('#file-upload').submit(function(e) { e.preventDefault(); let formData = new FormData(this); $('#file-input-error').text(''); $.ajax({ type: 'POST', url: "{{ route('resume.store') }}", data: formData, contentType: false, processData: false, success: (response) => { if (response) { this.reset(); $("#showResponseArea span").html(response); //you will paste your response msg to the $.ajax({ type: 'GET', url: "{{ route('resume.api') }}", dataType: 'json', data: { 'url': response, } }) } }, error: function(response) { $('#file-input-error').text(response.responseJSON.message); } }); }); </script>