2015-09-03 6 views
17

У меня есть проблема в моем Laravel приложения Ajax,Laravel 5 Ajax File/Image Загрузить

Я не могу загрузить изображения/файлы через POST AJAX.

вот мой код.

Ajax ..

/*Add new catagory Event*/ 
$(".addbtn").click(function(){ 
$.ajax({ 
     url:'add-catagory', 
     data:{ 
     logo:new FormData($("#upload_form")[0]), 
     }, 
     dataType:'json', 
     async:false, 
     type:'post', 
     processData: false, 
     contentType: false, 
     success:function(response){ 
     console.log(response); 
     }, 
    }); 
}); 
/*Add new catagory Event*/ 

клинка шаблон ...

<form enctype="multipart/form-data" id="upload_form" role="form" method="POST" action="" > 
     <div class="form-group"> 
     <label for="catagry_name">Name</label> 
     <input type="hidden" name="_token" value="{{ csrf_token()}}"> 
     <input type="text" class="form-control" id="catagry_name" placeholder="Name"> 
     <p class="invalid">Enter Catagory Name.</p> 
     </div> 
     <div class="form-group"> 
     <label for="catagry_name">Logo</label> 
     <input type="file" class="form-control" id="catagry_logo"> 
     <p class="invalid">Enter Catagory Logo.</p> 
    </div> 

    </form> 
    </div> 
    <div class="modelFootr"> 
     <button type="button" class="addbtn">Add</button> 
     <button type="button" class="cnclbtn">Reset</button> 
    </div> 
    </div> 

контроллер ..

public function catadd(){ 
    if (Input::hasFile('logo')) 
    { 
     return "file present"; 
    } 
    else{ 
     return "file not present"; 
    } 
} 

Route ..

Route::post('add-catagory',['as'=>'catagory_add','uses'=>'[email protected]']); 

Какая ошибка в моем коде ???

Я не могу получить информацию о файле в контроллере Laravel ..

Как я могу решить эту проблему ...?

+0

любые идеи здесь http://stackoverflow.com/questions/38893450/sending-pdf-file-to-server-using-ajax –

ответ

20

Две вещи, чтобы изменить:

Измените файл JS из:

data:{ 
    logo:new FormData($("#upload_form")[0]), 
}, 

To:

data:new FormData($("#upload_form")[0]), 

Потому что вы хотели бы отправить всю форму.

В вашем HTML:

Добавить имя для поля ввода файла

<input type="file" class="form-control" id="catagry_logo"> 

To:

<input type="file" name="logo" class="form-control" id="catagry_logo"> 
+3

Woooooooooooooow .. Спасибо, чувак ... Его работа прекрасна. –

+1

это называется TypeError: незаконный вызов –

+0

Это, скажем, позволяет найти ответ на google, хороший парень, полезный;) – Iamzozo

1

Проверить в контроллере, что вы получаете, когда вы пост:

echo dd(Input::all()); 

Проверять файлы объекта в PHP. Это в PHP:

$_FILES 

Request::file("logo"); 

Да, вы действительно не отправляете какие-либо данные? Форма действительно публикуется?

+0

его показывающая много bla bla скриптов чувак. –

+0

Что относительно объектов файлов в php? – marko

+0

Ни в коем случае marko .. Есть ли проблемы с formdata? –

1

это не работает для меня из-за dataType:'json'. Если кто-нибудь получит ошибку, просто удалите dataType:'json'.