【发布时间】:2021-05-10 19:43:31
【问题描述】:
在我看来,我有一个输入类型“文件”,所以我想用 jquery 获取这个文件并发送到我在 Laravel 中的控制器,但是,我在调试中没有看到这个文件
<form onSubmit="return false;" method="post" id="myForm" enctype=“multipart/form-data”>
@csrf
<label for="input-file-max-fs">Foto do perfil</label>
<input type="file" name="foto" id="foto" class="dropify @error('foto') is-invalid @enderror" data-max-file-size="3M" />
</form>
在 JS 中
$('.update).on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var dados = {
foto: $('input[name=foto]').val(),
.....
}
$.ajax({
method: 'PUT',
dataType: 'JSON',
url: '../perfil/editarusuario/',
data: dados,
success: function(res) {
console.log(res);
}
});
})
在我的控制器中,我试图获取文件,但没有成功
$file = $request->file('foto');
$file = $request->hasFile('foto')
$file = $request->file('foto')->isValid()
这些都不起作用
【问题讨论】:
-
尝试将
processData: false, contentType: false添加到您的 ajax 选项中 -
如果我使用了 processData: false, contentType: false 我看到“无属性”