这是我的表格:
<form role="form" action="{{ route('excel.form') }}" method="post" enctype="multipart/form-data">
Select an excel file to upload:
<input type="file" name="fileToUpload" id="fileToUpload" multiple>
<input type="submit" value="upload" name="submit">
{{ csrf_field() }}
</form>
js代码:
$('#fileToUpload').on('change',function(e){
var myFile = e.target.files[0];
var f_data = new FormData();
f_data.append('file', myFile);
$.ajax({
type : 'get',
data : f_data,
dataType : 'JSON',
url : "{{route('excel.form.ajax')}}",
processData: false,
contentType: false,
}).done(function(data){
console.log(data);
});
});
这里是ajax调用的路由:
Route::get('/ex2','ExcelController@ajax')->name('excel.form.ajax');
我在Laravel ExcelController文件中的代码:
public function ajax(Request $r)
{
return ['all_data' => $r->all(),
'request_files' => $r->allFiles(),
'$_FILES' => $_FILES,
'valid' => $r->file('file')->isValid()
];
}
............. 现在从控制器方法,当我使用&#34; 有效&#34;返回数组时键,输出是一堆空数组的对象。但我至少得到了回报。
但是当我添加
时'valid' => $r->file('file')->isValid()
在要返回的数组中,如上面的代码所示,返回是内部服务器错误,这个:
获取http://localhost/larajects/ghureBerai02/public/ex2?[object%20FormData] 500(内部服务器错误)
我认为这是因为isValid()方法被调用为空。这意味着formData由于某种原因未被传递。
即使是
if($r->all())
返回false
任何人都可以告诉我这个问题的原因是什么?