Mam blob
. Jest to obraz, który zmieniłem rozmiar przy użyciu <canvas>
. Sprawdziłem, czy dane są poprawne, konwertując je na adres URL, aby przetestować go zgodnie z the MDN guide. Jak na razie dobrze. Teraz chciałbym opublikować go na moim serwerze Django (wraz z kilkoma innymi danymi wejściowymi).Jak publikować i pobierać blob z Django
Więc to zrobić:
var fd = new FormData(form);
canvas.toBlob(function(blob) {
fd.set("image0", blob, "image0.jpg");
}, "image/jpeg", 0.7);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/ajax-upload/', true);
xhr.setRequestHeader("X-CSRFToken", csrftoken);
xhr.send(fd);
I sprawdzić wiadomości POST z konsolą inspektora sieci. Mój obiekt blob jest potwierdzany jako wysłany z żądaniem POST i widzę dane binarne wysyłane jako pole "image0".
-----------------------------1773139883502878911993383390
Content-Disposition: form-data; name="image0"; filename="blob"
Content-Type: image/png
Więc obsłużyć żądania POST z tym poglądem, dostępnym pod adresem URL /ajax-upload/
:
def ajax_upload(request):
if request.method == 'POST':
print(request.POST.urlencode())
To daje mi niczego. Kiedy dowiem się, gdzie trafił mój blob, jak mogę go przekształcić w Image
? Coś takiego jak img = Image.open(request.POST["image0"])
?
co jest zwracane w żądaniu. PŁATKI? – Jerzyk
request.FILES wydaje się być pusty: '' –
Escher