2017-08-15 13 views
0

私はajaxを使ってLaravelで写真をアップロードしています。 URLは正常に動作していますが、データはコントローラ内で機能していません。アップロードされたファイルは、LaravelのPHPコントローラでデータを取得していません。

HTMLコード

<input type="file" id="photo_input"> 

のAjax/jQueryのコード

$('#photo_input').change(function(){ 
var formData = new FormData('#photo_input');  
$.ajax({ 
     type:'POST', 
     url: home_url+'/upload-image', 
     data:formData, 
     cache:false, 
     enctype: 'multipart/form-data', 
     contentType: false, 
     processData: false, 
     success:function(data){ 
       console.log("success"); 
       console.log(data); 
      }, 
      error: function(data){ 
       console.log("error"); 
       console.log(data); 
      } 
     }); 
    }); 


コントローラ

でPHPコード0
public function uploadImage(){ 
    $data = Input::all(); 
    print_r($data); 
} 


コントローラ内の関数からの応答

array(
); 

私はHTMLで<form>タグを使用していないが、私はそれを直接アップロードします。 <form>タグを追加する必要はありますか? 見つからないことはありますか?

+0

@SagarGautam、私は追加する必要がありますかこれのために

タグ? – Omkar

+0

はい、入力用のフォームを作成し、submit a do do do do: –

+0

@Omkarこの質問を参照してください。 https://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously –

答えて

0

はこのようにそれを実行します。

<form method="POST" id="photoform" enctype="multipart/form-data"> 
<input type="file" id="photo_input"> 
</form> 

し、それに応じてAJAX要求は次のように変更する必要があります。私はこのためのフォームを使用していない

$('#photoform').submit(function(){ 
var fileupload = $('#photo_input').val();  
$.ajax({ 
     type:'POST', 
     url: home_url+'/upload-image', 
     data:{ 
      file: fileupload, 
     }, 
     cache:false, 
     enctype: 'multipart/form-data', 
     contentType: false, 
     processData: false, 
     success:function(data){ 
       console.log("success"); 
       console.log(data); 
      }, 
      error: function(data){ 
       console.log("error"); 
       console.log(data); 
      } 
     }); 
    }); 
+0

また、このURLに記載されているようなフォームを使わずに行うこともできます。https://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously –

+0

これはアップロードする方法ではないため、コードは機能しません。 ajaxを使用してファイル。フォームデータを使用してファイルをアップロードする必要があります。 – Farsay

+0

@Farsayそれは間違いなく動作します。私はそのように使用しました。 –

1
$("#example-form").submit(function(){ 

var formData = new FormData($(this)[0]); 
    $.ajax({ 
     data: formData 
    }); 
}); 
+0

@milo回答ありがとうございますが、私はを使用していませんので、タグ(可能な場合)を使用せずにファイルをアップロードするにはどうすればよいですか? – Omkar

+0

ajaxでbase64、post64のデータを使用できます。 https://stackoverflow.com/a/36281449/2693988 後でPHPをイメージメソッドに使用します。 https://stackoverflow.com/a/15153931/2693988 – syntaxe

関連する問題