Я пытаюсь отправить изображения из Dropzone и других текстовых полей. но dropzone работает отдельно, как я могу представить файлы dropzone с другими данными формы в контроллере. Мне нужно отправить форму с файлами по нажатию кнопки в методе контроллера.
HTML Форма
<form method="post" enctype="multipart/form-data" id="case-form" action="{{route('case-submit')}}">
@csrf
<div class="box-body form-element" >
<div class="row">
<div class="form-group clearfix">
<div class="col-sm-12">
<label for="example-text-input" class="col-sm-10">Doctor</label>
<input class="form-control" type="text" name="doctor_name" id="doctor_name" required max="50">
</div>
</div>
<div class="form-group clearfix">
<div class="col-sm-12">
<label for="example-text-input" class="col-sm-10">Upper Aligner</label>
<input class="form-control" type="number" name="upper_aligner" id="upper_aligner" required>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group clearfix">
<div class="col-sm-12">
<label for="example-text-input" class="col-sm-10">Portal</label>
<select class="form-control col-sm-10" name="portal_id" id="portal" required>
@foreach($portal as $obj)
<option value="{{$obj->id}}">{{$obj->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group clearfix">
<div class="col-sm-12">
<label for="example-text-input" class="col-sm-10">Patient</label>
<input class="form-control" type="text" name="patient_name" id="patient_name" required max="50">
</div>
</div>
<div class="form-group clearfix">
<div class="col-sm-12">
<label for="example-text-input" class="col-sm-10">Lower Aligner</label>
<input class="form-control" type="number" id="lower_aligner" name="lower_aligner" required>
</div>
</div>
</div>
<!-- /.col -->
</div>
<div class="row">
<div class="col-md-12">
<div class="col-sm-4" runat="server">
<label for="exampleInputFile">File Before</label>
<label class="control-label file_before" style="display:none; color: #fc4b6c;"><i class="fa fa-times-circle-o"></i></label>
<div class="file-drop-area border dropzone clsbox" id="mydropzone">
</div>
</div>
<div class="col-sm-4" runat="server">
<div class="form-group">
<label for="exampleInputFile">File After</label>
<label class="control-label file_after" style="display:none; color: #fc4b6c;"><i class="fa fa-times-circle-o"></i></label>
<div class="file_after-drop-area border dropzone clsbox" id="fileafterdropzone">
</div>
</div>
</div>
<div class="col-sm-4">
<label for="exampleInputFile">IPR Form</label>
<div class="ipr_form-drop-area border">
<input type="file" id="ipr_form" name="ipr_form" class="ipr_form files" accept="image/*" required>
<p class="message">Drag your files here or click in this area.</p>
</div>
<img src="" id="profile-img-tag" width="200px" />
</div>
</div>
</div>
<!-- /.row -->
</div>
<div class="box-footer">
<button type="submit" class="btn btn-info pull-right">Submit Case</button>
</div>
<!-- /.box-body -->
</form>
Javascript
<script src="{{asset('public/js/dropzone.js')}}"></script>
<script>
Dropzone.autoDiscover = false;
// Dropzone class:
var myDropzone = new Dropzone("div#mydropzone", {
url: "{{route('case-submit')}}",
acceptedFiles:'.stl',
addRemoveLinks: true,
autoProcessQueue:false,
params: {
_token: "{{csrf_token()}}"
},
});
var myDropzone = new Dropzone("div#fileafterdropzone", {
url: "{{route('case-submit')}}",
acceptedFiles:'.stl',
addRemoveLinks: true,
autoProcessQueue:false,
params: {
_token: "{{csrf_token()}}"
},
});
</script>
$(document).ready(function(e){
// Submit form data via Ajax
$("#case-form").on('submit', function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: '{{route('case-submit')}}',
data: new FormData(this),
dataType: 'html',
contentType: false,
cache: false,
processData:false,
success: function(response){
},
error: function(response){
}
});
});
});
</script>
Контроллер
public function caseSubmit(Request $request)
{
$case_number = $request->input('case_number');
$patient_name = $request->input('patient_name');
$doctor_name = $request->input('doctor_name');
$portal_id = $request->input('portal_id');
$date = date("Y-m-d H:m:s");
$user_id = Auth::id();
$caseInputData = ['patient_name' => $patient_name,
'doctor_name' => $doctor_name,
'case_number' => $case_number,
'created_at' => $date,
'user_id' => $user_id,
'portal_id' => $portal_id
];
$case = new Cases();
$case_data = $case->storePatientCase($caseInputData);
$caseId = $case_data->id;
$caseNumber = $case_data->case_number;
}
if ($caseId != null && $caseId > 0) {
$filesBefore = $request->file('file_before');
$no_of_files_attached = count($filesBefore);
$files_array = array();
foreach ($filesBefore as $fileBefore) {
$fileName = $fileBefore->getClientOriginalName();
$pathToStoreFile = public_path() . '/cases/' . $caseNumber . '/filesBefore/' . $revisions;
$fileBefore->move($pathToStoreFile, $fileName);
$files_array[] = $fileName;
}
$filesAfter = $request->file('file_after');
$no_of_files_attached = count($filesAfter);
$afterfileArray = array();
foreach ($filesAfter as $fileAfter) {
$afterfileName = $fileAfter->getClientOriginalName();
$pathToStoreFile = public_path() . '/cases/' . $caseNumber . '/filesAfter/' . $revisions;
$fileAfter->move($pathToStoreFile, $afterfileName);
$afterfileArray = $afterfileName;
}
$iprForm = $request->file('ipr_form');
$ipr_form = $iprForm->getClientOriginalName();
$pathToStoreFile = public_path() . '/cases/' . $caseNumber . '/ipr_form/' . $revisions;
$iprForm->move($pathToStoreFile, $ipr_form);
$unique_url = URL::to('/').'/'.$case_number.'/'.uniqid();
$data_array = [
'case_id' => $caseId,
'operator_id' => $request->input('operator_id'),
'upper_aligner' => $request->input('upper_aligner'),
'lower_aligner' => $request->input('lower_aligner'),
'file_before' => json_encode($files_array),
'file_after' => json_encode($afterfileArray),
'ipr_form' => $ipr_form,
'updated_at' => null,
'created_at' => $date,
'revisions' => $revisions,
'url' => $unique_url,
];
}
Как я могу получить файлы в контроллере с другими текстовыми данными и отправить данные в базу данных, используя этот метод caseSubmit