2017-06-04 12 views
2

私は、Laravel 5コントローラメソッドにajax submit formを作成しようとしています。 PHPでFormDataオブジェクトを定義し、入力フィールドをオブジェクトに追加してサーバーに送信し、入力フィールド名を使用して値を抽出できることを理解しています。そのようLaravelでFormDataオブジェクトを読み取る方法

form_dataはAJAX呼び出しで dataとして送信され
var form_data = new FormData(); 
formdata.append('file_name', 'some_file_name_from_form.png'); 

、私は$_FILES['file_name']['name'];を使用してPHPでファイルを取得することができます。

私はこの同じロジックをLaravelコントローラメソッドで試しました。私はちょうど$requestオブジェクトのファイルの名前をつかむことを試みたが、唯一のnullを得た。

私のコントローラメソッド:

public function postImage(Request $request) 
{ 
    $file = $request->get('file_name'); 

    dd($file); 
} 

しかし、私は全体の要求をddとき、私はこの奇妙なオブジェクトを参照してください。

array:1 [ "file_name" => UploadedFile {#199 -test: false -originalName: "work-fitness_00255959.png" -mimeType: "image/png" -size: 34215 -error: 0 #hashName: null path: "/tmp" filename: "phpVodsUg" basename: "phpVodsUg" pathname: "/tmp/phpVodsUg" extension: "" realPath: "/tmp/phpVodsUg" aTime: 2017-06-04 12:42:26 mTime: 2017-06-04 12:42:26 cTime: 2017-06-04 12:42:26 inode: 17573243 size: 34215 perms: 0100600 owner: 1000 group: 1000 type: "file" writable: true readable: true executable: false file: true dir: false link: false } ]

どのように私はを通じてアヤックスにFormData()オブジェクトを介して画像を送信されますようにしてくださいその名前?

ありがとうございました

答えて

4

これは可能です。

// get the `UploadedFile` object 
$file = $request->file('file_name'); 
$file = $request->file_name; 

// get the original file name 
$filename = $request->file('file_name')->getClientOriginalName(); 
$filename = $request->file_name->getClientOriginalName(); 

コード怒鳴るが私のために働いている、アップロードされたファイル上で利用できるhttps://laravel.com/docs/5.4/requests#retrieving-uploaded-files

APIメソッドhttp://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

+0

ありがとう –

0

詳細については、ドキュメントをチェックアウト:

$("#your_form").submit(function(e){ 
    e.preventDefault(); 
    var form = $(this); 
    var url = form.attr("action"); 
    var data = new FormData(form[0]); 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     data: data, 
     cache: false, 
     processData: false, 
     contentType : false, 
     success: function (data) { 
      console.log(data); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      console.log(jqXHR, textStatus, errorThrown); 
     } 
    }); 
}); 

私の問題ましたプロパティcontentType内にあります。だから、私は間違った設定にして、それは大丈夫です!

関連する問題