2016-10-26 7 views
1

JQueryを使用してファイルを投稿しようとしています。以下は私のコードです。ファイルのデータはサーバ側の空の配列です:Laravel 5.3

<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でデバッグしている間、あなたはイメージがデータに入っていることを確認できます。以下はスクリーンショットです。

enter image description here

しかし、私は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> 

である私が何か間違ったことをやっていますか?

答えて

1

代わりFormDataにリクエストを送信してみてください:

またcontentTypeのfalseに設定
var data = new FormData($('#frmUpdateProfile')[0]); 

contentType: false 

また

event.target.FileName.files[0] 
0123に

event.target.FileName.files 

を更新

1

event.target.FileName.filesはFileListオブジェクトです。代わりにevent.target.FileName.files[0]が必要だと思います。

関連する問題