[英]Can't receive files from JQuery Ajax request in Laravel
当尝试上传文件 CSV / Excel 文件并在 ajax 请求中接收它时,它没有按预期工作。
我使用 formdata object 上传文件,如下所示:
const formData = new FormData()
formData.append('file', file)
//upload the file to the server
Api.makeRequest('uploadFromFile', {
processData: false,
contentType: false,
enctype: 'multipart/form-data',
cache: false,
data: formData,
complete: function (xhr) {
if(xhr.status === 201 || xhr.status === 200){
console.log(xhr.responseJSON)
}else {
alert('error')
console.error(xhr.responseJSON)
}
}
})
正如我从文档中读到的,您必须像这样提取它:
$file = $request ->file('file_key')
使用此语法时,出现错误,并且 Laravel 无法提取文件:
public function uploadFromFile(Request $request){
if($request->hasFile('file')){
$file = $request->file('file');
return $file;
}else{
return response()->json(['error' => 'No file uploaded'], 400);
}
但是,当我使用常规request->has()
function 时,它工作正常。 返回类型只是 object。 由于我无法以正确的格式获取文件,我做错了什么?
//This works, getting some data but not a proper file object
public function uploadFromFile(Request $request){
if($request->has('file')){
$file = $request->get('file');
return $file;
}else{
return response()->json(['error' => 'No file uploaded'], 400);
}
<script> var droppedFiles=''; //input file change event to call this function function FileUpload(e) { droppedFiles = e.target.files || e.dataTransfer.files; } $('#FrmId').on('submit', function (e) { var $form = $('#FrmId'); var $input = $form.find('input[type="file"]'); var form_data = new FormData($('#FrmId')[0]); if (droppedFiles) { $.each( droppedFiles, function(i, file) { form_data.append( $input.attr('name'), file ); }); } $.ajax({ type: "POST", enctype: "multipart/form-data", url: "url", data: form_data, contentType: false, cache: false, processData: false, }).done(function (data) { }).fail(function () { }); return false; }); </script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.