Как вставить изображения в БД с помощью запроса ajax post в laravel?

Laravel view:

<form  enctype="multipart/form-data" method="post" name="imagesform" id="imagesform" >
    <input type="hidden" name="_token" value="{{ csrf_token()}}">
    <div>
        <label id="show" for="files" class="button">Upload photo</label>
        <input id="files" name="images" style="visibility:hidden;" type="file">
    </div> 
    <button type="submit"  class="save" id="saveImage" style="border-radius: 8px; padding: 5px 15px;">SAVE</button>
</form>

Это мой код для загрузки изображений (это происходит внутри моей модели bootstrap).Когда я загружаю изображение и нажимаю кнопку "отправить", изображение должно быть вставлено в БД, и то же самое должно быть извлечено и отображено на странице просмотра.

код Ajax:

$("#saveImage").click(function(e){
    // var formdata=new FormData($("#imagesform")[0]);
    //alert(formdata);
    $.ajaxSetup({
        headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }
    });
    $.ajax({
        url: 'saveImages/{{$dataId}}',
        type: 'POST',
        data:new FormData($("#imagesform")),
        success: function (data) {
            alert(data)
        },
        cache: false,
        processData: false
    });
    return false;
});

это код ajax, я пробовал.Но предупреждение formdata показывает [объект FormData] и консоли браузера шоу Method not allowed exception

Laravel Маршрут:

Route::post('saveImages/{dataId}',['as' => 'saveImages','uses'=>'priceDetails@saveImages']);

2 ответов


для загрузки файлов через AJAX вам нужно использовать XHR Уровень 2. The FormData класса необходимо HTMLFormElement в конструкторе если вы хотите отправить свой ключ-значение.

вы должны использовать:

new FormData( document.getElementById('imagesform') );

также вы можете использовать с jQuery:

new FormData( $("#imagesform").get(0) )

Регистрация мой ответ: в другом подобном вопросе, чтобы получить больше информации.

обновление: Видя ваши комментарии, ваша проблема также связана с маршрутом Laravel. Если код ошибки 500, и он показывает сообщение "метод не разрешен", вам нужно проверить свои маршруты в маршруты / web.в PHP. Пожалуйста, поместите здесь stacktrace ошибки и ваш файл маршрута (используйте pastebin или аналогичный).


я смог решить аналогичную проблему, Frankensteining различные предложения от здесь. У этой ссылки куча действительно хорошей информации. Вам нужно назначить некоторые параметры в вызове ajax false. В любом случае это то, что сработало для меня:

HTML-код

<input name="image" type="file" id="image">

в JavaScript

data = new FormData();
    jQuery.each(jQuery('#image')[0].files, function(i, file) {
        data.append('image', file);
    });

$.ajax({
    url: "submit/ajax",
    type: 'POST',
    cache: false,
    contentType: false,
    processData: false,
    data: data,
    success: function(response)
       {
          // Display your uploaded image on the page
       }
    });

PHP

Image::make($_FILES['image']['tmp_name']) >save("$myImageDirectory/$newImagegName");