投稿要求に3つのファイルとその他の文字列を渡しています。しかし、私の検証が失敗する理由はわかりません。ここで大きなファイルがアップロードされたときにラーバル検証が失敗する
はフォーム
<form>
<input type="radio" name="inter_fit" id="inter_good_fit" value = "good" >
<input type="radio" name="inter_fit" id="inter_bad_fit" value = "bad">
<input id="report_upload" type="file"/>
<input id="skype_upload" type="file"/>
<input id="audio_upload" type="file"/>
<input type="hidden" id="comp_candidate_id"/>
<input type="hidden" id="comp_profile_id"/>
</form>
var candidate_id = $('#comp_candidate_id').val();
var profile_id = $('#comp_profile_id').val();
var inter_fit = $("input[name=inter_fit]:checked").val();
var report_file = $("#report_upload").prop('files');
var skype_file = $("#skype_upload").prop('files');
var audio_file = $("#audio_upload").prop('files');
var dataString = 'inter_fit=' +inter_fit+ '&report_file=' +report_file+ '&skype_file=' +skype_file+ '&audio_file=' +audio_file+ '&candidate_id=' +candidate_id+ '&profile_id=' +profile_id;
console.log(dataString);
var formData = new FormData();
formData.append("inter_fit",inter_fit);
formData.append("candidate_id",candidate_id);
formData.append("profile_id",profile_id);
var reportInput = $("#report_upload").get(0).files[0];
formData.append("report_file",reportInput);
var skypeInput = $("#skype_upload").get(0).files[0];
formData.append("skype_file",skypeInput);
var audioInput = $("#audio_upload").get(0).files[0];
formData.append("audio_file",audioInput);
$.ajax({
type: "POST",
url: "/complete_interview",
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(data) {
showStatus(data)
},
error : function(xhr ,status ,error)
{
console.log(xhr);
console.log(status);
console.log(error);
}
});
function showStatus(data)
{
console.log(data);
}
テキストファイルのような小さなファイルがアップロードされている場合は問題が発生していないし、それが検証に合格です。大きなファイルがアップロードされると、検証は失敗します。私のコントローラコードは
public function completeInterview(Request $request){
$val = \Validator::make($request->all(),
['inter_fit' => 'required',
'report_file' => 'required',
'skype_file' => 'required',
'audio_file' => 'required', //not passed
'candidate_id' => 'required',
'profile_id' => 'required',
]);
if ($val->fails()) {
return response()->json(['msg'=>"val_failed"]);
}
}
私はPHPファイルのアップロードと最大投稿サイズの設定を変更しました。私はここで何が問題なのか分かりません。
私はいつもval_failedという応答を得ています。
<form role="form" method="post" enctype="multipart/form-data">
あなたはPOSTリクエストを作るとき、あなたはそのフォームデータをエンコードする必要があります。私はこのようなフォーム要素でのenctypeを追加し、この答えはあなたの質問を解決する場合は知っているがいけない
実際に検証エラーを印刷して、なぜ失敗したのか分かりませんか? '$ errors = $ val> errors(); dd($ errors-> all()); ' –