Передача изображения в php через Ajax - PullRequest
0 голосов
/ 25 января 2019

У меня есть сайт, на котором я разрешаю пользователю выбрать изображение.Я хочу, чтобы это изображение было загружено в мою базу данных.Я использую php для загрузки и использую функцию Ajax для передачи изображения.Однако, похоже, что изображение на самом деле не передается как изображение, а как .bin, когда я открываю изображение из своей базы данных.Вот моя функция Ajax

<script>
function AddItem(){
var name = document.forms["additemform"]["nc_name"].value;
var tag = document.forms["additemform"]["nc_tag"].value;
var description = document.forms["additemform"["nc_description"].value;
var image = document.forms["additemform"]["nc_image"].value;

  var isValid = false;
  $.ajax({           
      type: "POST",  
      url: "/AddNewItem.php",  
      data: { "Item_Name": name, "Item_Tag": tag, "Item_Description": description, "Item_Image": image },
      dataType: "json",
      success: function(resp){
        console.log(resp);
        if(resp.reply == "Success")
        {
            isValid = true;
          form.submit();
        }
        else
        {
        isValid = false;
        }
      },
      error: function(data, status){
        console.log(data, status);
        alert("error")
      }

    }); //end Ajax
    console.log(isValid);
     return isValid;
};
</script>

В моих файлах AddNewItem.php я получаю изображение следующим образом:

$itemimage = base64_encode($_POST["Item_Image"]);

, после этого я просто загружаю его в базу данных.Загрузка работает, но похоже, что я загружаю в неправильном формате.Что я делаю неправильно.Мне нужно убедиться, что загрузка выполняется в формате jpeg, но в формате .bin.

1 Ответ

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

вы можете использовать FormData пример

$('#add_form').submit(function (e) {
e.preventDefault();
var name_ar = $('#form_name_ar').val();
var name_en = $('#form_name_en').val();
var token = $('#form_token').val();
var formData = new FormData($('#add_form')[0]);
formData.append('file', $('input[name=form_file]')[0].files[0]);
formData.append('name_ar', name_ar);
formData.append('name_en', name_en);
formData.append('_token', token);

$.ajax({
    url: add_url,
    method: 'post',
    data: formData,
    contentType: false,
    processData: false,
    success: function (data) {
        toastr.success(data);
        $('#users-table').DataTable().ajax.reload();
        $('#form_name_ar').val('');
        $('#form_name_en').val('');
        $("html, body").animate({
            scrollTop: 0
        }, 1000);
    },
    error: function(data){
        toastr.error(data.responseJSON)
    }
})

});

...