2016-01-28 73 views
0

當我想通過Ajax將圖像傳遞給控制器​​時,我遇到了一些問題。任何幫助?這是我的代碼LARAVEL 5使用AJAX將圖像發送給控制器

// ROUTE

Route::post('get-image', '[email protected]_image'); 

//IMAGE.BLADE.PHP

{!! Form::open([ 'id'=>'upload-doc','files'=>true ]) !!} 

{!! Form::file('fileupload', ['id'=>'fileupload', 'onchange'=>"this.parentNode.nextSibling.value = this.value" ], null) !!}Browse 
<button type="button" id="uploadFile">Upload</button> 
{!! Form::close() !!} 

// AJAX

action = "<?php echo action('[email protected]_image'); ?>"; 
$.ajax({ 
    url: action, 
    type: 'POST', 
    data: new FormData($("#upload_doc")[0]), 
    cache: false, 
    dataType: 'json', 
    processData: false, 
    contentType: false, 
    success: function(data){ 
     alert(data.display); 
    } 
}); 

//控制器功能get_image()

public function get_image(){ 

     $name = ''; 
     $image = \Input::file('fileupload'); 
     $validator = \Validator::make([$image], ['image' => 'required']); 
     if ($validator->fails()) { 
      $name = "FAIL"; 
     } 
     else{ 
      $name = "SUCCESS"; 
     } 

     $data = array('display' => $name); 
     echo json_encode($data); 
    } 

我每次得到的結果都是「失敗」。我究竟做錯了什麼?

回答

0

我解決它。由於我只是在提交表單時才收到文件。我決定增加

$("#upload-doc").submit(); 
var formData = new FormData($('#upload-doc')[0]); 

我的jQuery方法內

$("#uploadFile").click(function(e) { 

$("#upload-doc").submit(); 
var formData = new FormData($('#upload-doc')[0]); 
action="<?php echo action('[email protected]_image'); ?>"; 

$.ajax({ 
    url: action, 
    type: 'POST', 
    data: formData, 
    cache: false, 
    dataType: 'json', 
    processData: false, 
    contentType: false, 
    success: function(data){ 
     alert('in success'); 
     console.log(data); 
     e.preventDefault(); 
    } 
}); 
}) 
0

你可以做

if (Input::file('fileupload')) { 

} 

作爲驗證的一種方式。

+0

感謝快速回復;我試過了,'if(\ Input :: hasFile('fileupload'))',但沒有運氣。我想知道如果控制器實際接收文件。 – JCD

+0

確保你在控制器的使用部分有'use Input; '並刪除輸入:: .... –

+0

我剛剛那樣做。它仍然給我同樣的結果。 – JCD

0

@SAri Yono,通過後沒有意見;它被髮回到ajax jquery以alert/console.log顯示結果

<meta name="_token" content="{{ csrf_token() }}" /> 
<script type="text/javascript"> 

$(document).ready(function() { 

$("#upload-doc").submit(function(e){ 
    e.preventDefault(); 
}); 

$.ajaxSetup({ 
headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') } 
}); 

$.ajax({ 
    url:  action, 
    type: 'POST', 
    data: new FormData($("#upload_doc")[0]), 
    cache: false, 
    dataType: 'json', 
    processData: false, 
    contentType: false, 
    success: function(data){ 
     console.log(display); 
    } 
}); 

e.preventDefault(); 

}); 
</script> 

身體標籤之間我只有表格。

{!! Form::open([ 'id'=>'upload-doc','files'=>true ]) !!} 
{!! Form::file('fileupload', ['id'=>'fileupload'], null) !!} 
<button type="button" id="uploadFile">Upload</button> 
{!! Form::close() !!} 

的CONSOLE.LOG顯示此Object {display: "FAIL"}

+0

爲什麼不返回Input :: all();只是這樣我們才能看到傳遞過來的東西 –

相關問題