2017-09-20 5 views
1

私は1つのファイル入力を持つフォームを持っています。私が選択したすべての画像をCtrl +クリックして保存します。Laravel 5.5 1つのファイル入力で複数の写真を保存する

私のajax呼び出しの応答は、常に1つのファイル名しか返しません。どのようにして私のすべてのファイルのオブジェクトを返すことができますか?

私の入力フィールド:

<?php echo Form::file('photos[]', ['multiple', 'id' => 'photos']); ?> 

私のAjax呼び出し:

let token = $('meta[name="csrf-token"]').attr('content'); 
let photos = $('input[type=file]').val().split('\\').pop(); 

var values = { 
    photos: photos, 
} 

$.ajax({ 
    type: 'POST', 
    url: '/upload', 
    dataType: 'JSON', 
    data: { 
     "_method": 'POST', 
     "_token": token, 
     "values": values 
    }, 
    success:function(data){ 
     console.log('success'); 
     console.log(data); 
    }, 
    error:function(){ 
    }, 
}); 

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

/** 
* Handles the upload of the images. 
* 
* @return Response 
*/ 
public function uploadSubmit(Request $request) 
{ 
    if ($request->isMethod('post')){ 

     $values = $request->values; 

     return response()->json([ 
            'response' => 'This is post method', 
            'values' => $values 
           ]); 
    } 
} 
+0

この記事を見てみましょう:http://www.code-hound.com/upload-multiple-files-at-once-with-jquery- and-php/ –

答えて

0

は、コードの下に試してみて、Ajaxコードにいくつかの変更を行います。コードに以下のパラメータを追加します。

processData: false, 
contentType: false, 

さらに、AJAXが起動する前にvar formData = new FormData($("#formID")[0]);行を追加します。

または下記のコードを確認し、コードに従って変更してください。

以下のjqueryコードを使用して、AJAXを使用してファイルをアップロードしてください。

var formData = new FormData($(form)[0]); 
$.ajax({ 
    url: form.action, 
    type: form.method, 
    data: formData, 
    processData: false, 
    contentType: false, 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('X-CSRF-Token', $("meta[name='_csrf']").attr("content")); 
    }, 
    success: function (response) { 

    } 
}); 

コントローラーサイドコード:

foreach($request->only('files') as $files){ 
    foreach ($files as $file) { 
     if(is_file($file)) { // not sure this is needed 
      $fname = $file->getClientOriginalName(); 
      $string = str_random(16); 
      $ext = $file->guessExtension(); 
      $file_name = $string . '.' . $ext; 
      $filepath = 'uploads/' . $file_name; 
      $file->storeAs('uploads/', $file_name); 
     } 
    } 
} 
+0

私はこれを試してみましたが、うまくいくようですが、アップロードした画像の情報(ファイル名など)は取得されません。 – Chris

+0

ファイルのデータをどのように入手できますか? – Chris

+0

更新された希望が助けてくれます –

関連する問題