Я пытаюсь опубликовать обрезанное изображение через 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 -



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы явно устанавливаете для свойства contentType значение multipart/form-data, но при этом отсутствует граничная строка, необходимая для запросов multipart/form-data. Тогда Django не поймет, как разбирать тело запроса.
Попробуйте установить contentType на false, что даст указание JQuery не устанавливать заголовок Content-Type.
$.ajax({
...
contentType: false,