【发布时间】:2021-12-11 12:14:11
【问题描述】:
首先我尝试通过 ajax 上传文件,当我在我的控制器中尝试dd($request->all())时,它会给出结果empty array
public function uploadFile(Request $request){
dd($request->all());
}
我的 ajax 刀片视图
<label for="inputfile">
<a title="Click here to upload record "><i class="fa fa-upload"></i></a>
</label>
<input id="inputfile" name="inputfile" type="file" />
<script>
$('#inputfile').on('change',function(ev){
ev.preventDefault();
var postData=new FormData();
postData.append('file',this.files[0]);
$.ajax({
url:'{{url('reporting/uploadFile')}}',
headers:{'X-CSRF-Token':$('meta[name=csrf_token]').attr('content')},
type:"get",
contentType:false,
data:postData,
processData:false,
dataType:'json',
success: function( data ) {
console.log(data)
},
error: function() {
alert('error');
} }); });
</script>
我的 laravel 版本是 5.8 。流程是当用户上传附件时,它会直接存储到文件存储中,而无需点击按钮提交。但是当我尝试检索 $request->all() 它返回空数组时,我无法继续进一步的步骤。对不起,如果我的解释不清楚。
【问题讨论】:
-
dd($request->file('file'))也是空的吗?有时它不包含在all中。还要检查控制台是否有任何浏览器 JS 错误 -
@apokryfos 在我的控制台中没有错误。 dd($request->file('file')) 也为空
-
为什么要使用
get的方式提交表单?您应该改用post,或者在patch的情况下,您需要附加formData_method: post以在laravel 端获取文件
标签: javascript php ajax laravel