Laravel & SurveyJS file upload
We are in a situation where we need to alter code that offshore devs implemented for us and we are trying to intercept the AJAX Post request of SurveyJS to upload the file to my Laravel instance. ** This is done in Laravel 5.7 **
Ajax:
survey.onUploadFiles.add(function(survey, options) { var formData = new FormData(); var file = options.files options.files.forEach(function(file) { formData.append(file.name, file); console.log(file.name); }); $.ajax({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, url: "/upload", type: "POST", xhr: function () { var myXhr = $.ajaxSettings.xhr(); if (myXhr.upload) { myXhr.upload.addEventListener('progress', function (event) { var percent = 0; var position = event.loaded || event.position; var total = event.total; var file = options.files; }, false); } return myXhr; }, success: function (data) { options.callback("success", options.files.map(function(file) { return { file: file, content: "/" + data[file.name] }; }) ); }, error: function (error) { }, async: true, data: formData, cache: false, contentType: false, processData: false, timeout: 60000, }); });
Laravel Controller:
public function saveFile(Request $request) { foreach ($request->files as $files) { if($request->file()) { $fileName = time().'_'.$request->file->getClientOriginalName(); $filePath = $request->file('file')->storeAs('uploads', $fileName, 'public');
return back()
->with('success','File has been uploaded.')
->with('file', $fileName);
}
}
}
Please or to participate in this conversation.