为啥 laravel $request->file 返回 null?
Posted
技术标签:
【中文标题】为啥 laravel $request->file 返回 null?【英文标题】:Why does laravel $request->file return null?为什么 laravel $request->file 返回 null? 【发布时间】:2021-08-12 23:53:26 【问题描述】:我有一个代码,我在另一个应用程序中使用它来使用运行良好的 Ajax 上传文件。 在带有 Jquery 模式对话框的新应用程序中重用此代码未按预期工作。以下是我的表格:
!! Form::open(['method' => 'POST', 'route' => ['auto-evaluation-documents.store'], 'files' => 'true', 'role' => 'form', 'id' => 'document_form']) !!
<div class="modal-content" modal-transclude="" title="New Attachment">
<div class="form-group">
<input class="ng-scope" type="file" name="file" id="file">
</div>
</div>
!! Form::close() !!
下面是我的模态对话框
var dialog;
dialog = $(".modal-content").dialog(
autoOpen: false,
height: 400,
width: 600,
modal: true,
buttons:
"Save": uploadFile,
Cancel: function()
$('#file').val('');
$('.c-fileupload__body').hide();
dialog.dialog( "close" );
,
close: function()
//form[ 0 ].reset();
//allFields.removeClass( "ui-state-error" );
$('#file').val('');
$('.c-fileupload__body').hide();
);
$("#new_attachment_button").button().on( "click", function()
dialog.dialog( "open" );
);
下面是上传文件功能
function uploadFile()
var document_form = $('#document_form');
var options =
beforeSubmit: showRequest, // pre-submit callback
success: showResponse, // post-submit callback
uploadProgress: OnProgress, //upload progress callback
data: 'document_type': 'file', 'evaluation_session_id':'2',
url: document_form.attr('action'),
type: 'post',
dataType: 'json'
;
// attach handler to form's submit event
document_form.ajaxSubmit(options);
// return false to prevent normal browser submit and page navigation
return false;
// pre-submit callback
function showRequest(formData, jqForm, options)
var file_msg = $('#file_msg');
file_msg.empty().hide();
var value = $('#file').fieldValue();
if (!value[0])
message = "<li>Please select a file to upload</li>";
file_msg.append(message).show();
return false;
else
formData.push( 'name': 'file', 'value': value[0]);
return true;
在 Laravel 控制器中,我这样做:
public function store(Request $request)
$file = $request->file('file');
$return['success'] = true;
$return['file_name'] = $file;
return response()->json($return, 200, ['Content-Type' => 'text/html']);
但是,当我检查控制台时,$request->file('file') 得到的结果为 null
如果我执行 $request->get('file'),我会得到 C:\fakepath\banner-image.jpg
为什么即使我的表单有 enctype="multipart/form-data" $request->file('file') 也不起作用?
我在这里应用了其他解决方案,但没有成功。请帮忙
【问题讨论】:
【参考方案1】:你应该尝试转储 $request->all();看看错误是否在前端。如果您有名为“文件”的文件,则错误在前端/Angular 中。
【讨论】:
这是 $request->all() 转储的结果,array(4) ["_token"]=> string(40) "2OMJoSozppgNmCvEORvdSuC77sS9ZAFxLfTqx9Gu" ["file"]=> string(30) "C:\fakepath\Blessed Divine.png" ["document_type"]=> string(4) "file" ["evaluation_session_id"]=> string(1) "2"
以上是关于为啥 laravel $request->file 返回 null?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 表单验证,为啥我的视图中没有可用的 $errors 变量?
laravel在使用GuzzleHttpPsr7Request报错SymfonyBridgePsrHttpMessageFactoryHttpFoundationFactory not f