为什么laravel $request->file 返回null?

问题描述

我有一个代码,我在另一个应用程序中使用该代码使用 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') 得到的结果为空

如果我执行 $request->get('file'),我会得到 C:\fakepath\banner-image.jpg

为什么即使我的表单有 enctype="multipart/form-data" $request->file('file') 也不起作用?

在这里应用了其他解决方案,但没有成功。请帮忙

解决方法

你应该尝试转储 $request->all();查看错误是否在前端。如果您有名为“file”的文件,则错误在前端/Angular 中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...