Привет я хочу передать formdata с типом файла ввода, но как я могу это сделать? - PullRequest
0 голосов
/ 18 января 2019

У меня есть эта функция, когда я меняю тип входного файла для вставки в базу данных в Laravel.

$(document).on('change', '#galeria_imagen', function () {

    var elab = $('#elaboracion_ins').val();
    var formdata = new FormData();

    formdata.append("galeria_imagen", $('input[name=galeria_imagen]')[0].files[0]);

    console.log(prueba);
    $.ajax({
        type: 'POST',
        url: "/admin/elaboraciones/ajax/setGaleria",
        processData: false,
        data: formdata,
        success: function () {
            recargar_galeria(elab);
        }
    });
});

И всегда возвращайте мне " Недопустимый вызов ", и я ставлю ProcessData:false и у меня не работает, потому что не вставляю, в Laravel мне нужен хэш base64 для вставки файла.

Ответы [ 3 ]

0 голосов
/ 18 января 2019

добавить multipart / form-data как тип mime

$(document).on('change', '#galeria_imagen', function () {

var elab = $('#elaboracion_ins').val();
var formdata = new FormData();

formdata.append("galeria_imagen", $('input[name=galeria_imagen]')[0].files[0]);

console.log(prueba);
$.ajax({
    type: 'POST',
    url: "/admin/elaboraciones/ajax/setGaleria",
    mimeType: "multipart/form-data",
    processData: false,
    contentType: false,
    data: formdata,

    success: function () {
        recargar_galeria(elab);
    }
});
});
0 голосов
/ 18 января 2019

Вот образец, который работает - см. http://jsfiddle.net/09o71yjc/

$('form.uploader input:file').on('change', function() {

    var data = new FormData();
    data.append('file', this.files[0]);

    $.ajax({
        url: $('.uploader').attr('action'),
        type: 'POST',
        dataType: 'json',
        processData: false,
        data: data,
        success: function () {
            alert('Uploaded')
        }
    });
});
0 голосов
/ 18 января 2019

Не видя ваш HTML, мы не можем сказать.Но я думаю, что вы устанавливаете galeria_imagen как name, а не id, так что это вас никуда не приведет.Кроме того, когда вы находитесь внутри обработчика, контекст this фактически является самим элементом, поэтому вы можете просто сделать this.files[0].

$(document).on('change', 'input[name="galeria_imagen"]', function() {
  var elab = $('#elaboracion_ins').val();
  var formdata = new FormData();

  formdata.append(this.name, this.files[0]);

  $.ajax({
    type: 'POST',
    url: "/admin/elaboraciones/ajax/setGaleria",
    processData: false,
    data: formdata,
    success: function() {
      recargar_galeria(elab);
    }
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...