【发布时间】:2021-12-16 20:22:01
【问题描述】:
我的表单通过 AJAX 提交一个文件和某些文本,唯一的问题是通过 AJAX 上传文件。表单数据正在通过 FormData 实例提交,但在尝试保存文件时出现数组到字符串的转换错误。 我附上下面的脚本。
控制器:
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'contact_number' => 'required|numeric',
'email' => 'required',
'total_exp' => 'required|numeric',
'skillsets' => 'required',
'current_organization' => '',
'remarks' => '',
'file_name' => 'required|max:2048'
],
[
'name' => 'This field is mandatory',
'contact_number' => 'This field is mandatory',
'email' => 'This field is mandatory',
'total_exp' => 'This field is mandatory',
'skillsets' => 'This field is mandatory',
'total_exp.numeric' => 'Only numberic values allowed',
'contact_number.numeric' => 'Only numberic values allowed'
]);
//try{
$career = CareerForm::updateOrCreate([
'name'=>$request->name,
'contact_number'=>$request->contact_number,
'email'=>$request->email,
'total_exp'=>$request->total_exp,
'skillsets'=>$request->skillsets,
'current_organization'=>$request->current_organization,
'remarks'=>$request->remarks,
'file_name' => $request->file_name,
]);
//if(request()->hasFile('file_name')){
$file=$request->file('file_name');
$fname = rand().'.'.$file('file_name')->getClientOriginalName().'.'.$file('file_name')->getClientOriginalExtension();
$file->move(public_path('documents'),$fname);
//$file->move(public_path('uploads'), $fname);
//$request->file->move(public_path('uploads'), $fileName);*/
/*$file = $request->file('file_name')->store('public/documents');
Storage::disk('local')->put($request->file($request->file)->getClientOriginalName(), 'Contents');*/
//}catch(Exception $e1){echo $e1;}
return response()->json([
"success" => true,
]);
查看:
@extends('layouts.app')
@section('content')
<h2>Career Form using AJAX</h2>
<form class="form-signin" id="form_todo" enctype="multipart/form-data">
<h1 class="h3 mb-3 font-weight-normal">Career Form</h1>
<label for="inputEmail" class="sr-only">Name</label>
<input name="name" type="text" id="inputName" class="form-control" placeholder="Name" required="" autofocus="">
@error('name')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<label for="" class="sr-only">Contact Number</label>
<input name="contact_number" type="" id="c_n" class="form-control" placeholder="Contact Number" required="" autofocus="">
@error('contact_number')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<label for="" class="sr-only">Email</label>
<input name="email" type="text" id="eml" class="form-control" placeholder="Email" required="" autofocus="">
@error('email')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<label for="" class="sr-only">Total Experience</label>
<input name="total_exp" type="" id="exp" class="form-control" placeholder="Total Experience" required="" autofocus="">
@error('total_experience')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<label for="" class="sr-only">Skillsets</label>
<input name="skillsets" type="text" id="skl" class="form-control" placeholder="Skillsets" required="" autofocus="">
@error('skillsets')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<label for="" class="sr-only">Curent Organization</label>
<input name="current_organization" type="text" id="c_o" class="form-control" placeholder="Current Organizations (Optional)" autofocus="">
@error('current_organization')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<label for="" class="sr-only">Remarks</label>
<input name="remarks" type="text" id="rem" class="form-control" placeholder="Remarks (Optional)" autofocus="">
@error('remarks')
<div class="text-red-500 mt-2 text-sm">
{{$message}}
</div>
@enderror
<input type="file" id="file_id" name="file_name[]" class="form-control">
<!--<button type="button" id="btnFile" class="btn btn-primary">Submit File</button>-->
<button class="btn btn-primary btn-block" id="career_btn" type="submit">Submit</button>
</form>
<p class="mt-5 mb-3 text-muted">Done by Debajyoti Das</p>
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
$("#form_todo").on('submit',function(e) {
//$("#career_btn").click(function(e) {
e.preventDefault();
//var formData = new FormData($(this)[0]);
//var files = $("#file_id")[0].files;
var formData = new FormData(this);
//formData.append('file_id',files[0]);
$.ajax({
type: 'POST',
url: "career/store",
data: formData,
datatype: 'JSON',
contentType: false,
cache: false,
processData: false,
success: function(data) {
}
});
});
</script>
@endsection
JSON 错误信息:数组到字符串的转换 任何帮助将不胜感激。
【问题讨论】:
标签: ajax laravel file-upload laravel-8 jquery-file-upload