2016-01-31 2 views
0

Я пытаюсь загрузить изображение с помощью ajax, и я получаю: Не удалось загрузить ресурс: сервер ответил статусом 500 (Internal Server Error). Вот мой Аякс:Ошибка MethodNotAllowedHttpException в Laravel 5 с использованием ajax

$('document').ready(function() { 
    $('#uploadImage').change(function(){ 
     image = $('#uploadImage').val; 
     token = $('#token').val(); 
     $.ajax ({ 
      type: 'POST', 
      url: '/photo', 
      data: { image , token }, 
      success: function(){ 

       $('.img-thumbnail').attr("src", 'images/new_image.png'); 
      } 
     }) 
    }) 


}); 

Вот мой маршрут: Route::post('/photo', '[email protected]');

Это мой контроллер:

public function uploadPhoto(Request $request) 
    { 

     //Sets file name according to authenticated shop id 
     $imageName = 'new_image.png'; 

     //Save file to public/images 

     $img = Image::make($request->file('image')); 
    $img->resize(380, 300)->save('images/' . $imageName, 60); 
    } 

И это моя форма:

<form action="{{ action('[email protected]') }}" method="post" enctype="multipart/form-data"> 
    <input id="token" type="hidden" name="_token" value="{{ csrf_token() }}"> 
    <input id="uploadImage" class="btn btn-upload" type="file" name="image"> </form> 
+0

Ваша форма действия должна быть 'действие ('ShopsController @ uploadPhoto')', не так ли? На основе маршрута, на который вы отправляете POSTING? – ceejayoz

+0

Проверить доступ, указанный в AccessControl – SohelAhmedM

+0

Обратите внимание на знак подчеркивания ints (_token) - убедитесь, что вы отправили тот же знак подчеркивания в данные сообщения ajax – Vojko

ответ

0

AJAX загрузка файлы немного сложнее, чем просто получить атрибут value вашего элемента изображения.

Прочитайте первый ответ на этот вопрос здесь: jQuery Ajax File Upload

Он использует FormData объект MDN:

// HTML file input, chosen by user 
formData.append("userfile", fileInputElement.files[0]); 

, хотя это не поддерживается всеми браузерами.

Простой пример JQuery ajaxFileUpload здесь: http://www.sitepoint.com/image-upload-example/

+0

Благодарим вас за ответ. Теперь я проверил, что когда я установлю метод «get», это будет немного дальше. Поэтому я думаю, что проблема в том, что, хотя я установил маршрут «post» на laravel, его поведение похоже на get. Не могли бы вы объяснить мне это? –

+0

image = $ ('# uploadImage'). Val; Это не сработает. Изображения имеют разные форматы, каждый из которых имеет свою собственную кодировку. image = $ ('# uploadImage'). val просто не получит изображение. И ваш маршрут POST не ведет себя как GET. потому что либо у вас установлен маршрут GET, либо по умолчанию метод get дает вам некоторую ошибку по умолчанию вместо внутренней ошибки. – TurtleTread

+0

Nvm я найду другой путь. Кстати, спасибо за этот урок ajax и за ваш ответ. –

Смежные вопросы