文件数据在服务器端是空白数组:Laravel 5.3

File Data is blank array in server side: Laravel 5.3

我正在尝试 post 文件使用 JQuery。下面是我的代码。

<script language="javascript">
    $(document).ready(function() {
        $('#frmUpdateProfile').on("submit", function(event) {
            event.stopPropagation(); // Stop stuff happening
            event.preventDefault(); // Totally stop stuff happening
            var data = {
                "FileName"      :   event.target.FileName.files,
                "_token"        :   "{!! csrf_token() !!}"
            };
            $.ajax({
                url:            '{{URL::route("UpdateProfile")}}',
                method:         "POST",
                async:          true,
                data:           JSON.stringify(data),
                processData:    false,
                contentType:    "application/json; charset=utf-8",
                success: function (msg) {
                    SuccessCallback(msg);
                },
                error: function (jqXHR) {
                    ErrorCallback(jqXHR);
                }
            });
        });
    });
</script>

我试过了processData: false,。在 Js 中调试时,您可以检查数据中是否有图像。下面是截图。

但是当我在Laravel中打印请求数据时,它显示空白数组。

Html表格在这里

<form method="POST" 
        action="http://localhost:1234/AS6-Code/public/UpdateProfile" 
        accept-charset="UTF-8" 
        enctype="multipart/form-data"  
        id="frmUpdateProfile">

    <input name="_token" type="hidden" value="26KWkWdNqe5iOFE8VRBf1dRnL5xKxwN25jg3tAFW">
    <input type="hidden" name="_token" value="26KWkWdNqe5iOFE8VRBf1dRnL5xKxwN25jg3tAFW">
    <input multiple="1" name="FileName" type="file">
    <input class="btn btn-info" type="submit" value="Update">
</form>

我是不是做错了什么?

尝试使用 FormData 发送您的请求:

var data = new FormData($('#frmUpdateProfile')[0]);

同时将 contentType 设置为 false:

contentType: false

同时更新

event.target.FileName.files  

event.target.FileName.files[0]

event.target.FileName.files 是一个 FileList 对象。我相信您需要 event.target.FileName.files[0]