Внутренняя ошибка сервера при публикации изображения через jquery, ajax и django

Я пытаюсь опубликовать обрезанное изображение через JQuery и ajax. Я следил за решением этого вопроса обрезать изображение с использованием координат, однако мне не повезло с получением изображения на стороне Django, несмотря на то, что токен CSRF и изображение обрабатываются штрафом запроса ajax.

Я ничего не сделал в моем views.py, просто попытался распечатать request.FILES и request.POST, чтобы увидеть, вернулось ли что-нибудь, но безуспешно. Не уверен, как и следует ли мне относиться к этому по-другому.

JS

  function readURL(input) {
if (input.files && input.files[0]) {
  var reader = new FileReader();
  reader.onload = function(e) {
    $('#image').attr('src', e.target.result)
  };
  reader.readAsDataURL(input.files[0]);
  setTimeout(initCropper,1000);
}

}

function initCropper() {
    console.info("initializing")
    var image = document.getElementById('image');
    var cropper = new Cropper(image, {
      aspectRatio: 16/9,
      viewMode: 1,
      autoCropArea: 0.8,
      cropBoxResizable: false,
      minCropBoxWidth: 640,
      minCropBoxHeight: 360,
      minContainerWidth: 720,
      minContainerHeight: 405,
      crop: function(e) {
        console.info(e.detail.x);
        console.info(e.detail.y);
      }
    });
document.getElementById('crop_button').addEventListener('click', function(){
  var imgurl = cropper.getCroppedCanvas().toDataURL();
  var img = document.createElement("img");
  img.src = imgurl;

  cropper.getCroppedCanvas().toBlob(function(blob){
    var formData = new FormData();
    formData.append('croppedImage', blob);
    formData.append('csrfmiddlewaretoken', '{{csrf_token}}')

    $.ajax({
      url: '/campaigns/create/',
      method:"POST",
      data: formData,
      processData: false,
      contentType: 'multipart/form-data',
      success: function () {
        console.info("Upload success");
      },
      error: function () {
        console.info('Upload error')
      }
    });
  });

})

};

HTML

<div class = "col-xl-9 col-lg-9">
                                      <input type = "file" name = "inputImage" id = "inputImage" onchange = "readURL(this);"/>
                                      <div class = "image_container">
                                        <img id = "image" src = "#" alt = "your image"/>
                                      </div>
                                    </div>
                                    <button id = "crop_button">Crop</button>

ОШИБКА

....
[16/Dec/2018 14:08:26] "POST /campaigns/create/ HTTP/1.1" 500 59
[16/Dec/2018 14:08:26] code 400, message Bad request syntax ('------ 
WebKitFormBoundarycvWRqqCDKW5sPfBT')
[16/Dec/2018 14:08:26] "------WebKitFormBoundarycvWRqqCDKW5sPfBT" 400 -
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
208
1

Ответы 1

Вы явно устанавливаете для свойства contentType значение multipart/form-data, но при этом отсутствует граничная строка, необходимая для запросов multipart/form-data. Тогда Django не поймет, как разбирать тело запроса.

Попробуйте установить contentType на false, что даст указание JQuery не устанавливать заголовок Content-Type.

$.ajax({
  ...
  contentType: false,

Другие вопросы по теме