我有一个blob
。这是一个我使用<canvas>
调整大小的图像。我已经验证了数据是正确的,通过将它转换为一个url来测试它按照the MDN guide。到目前为止一切顺利。现在,我想把它发布到我的Django服务器(沿着其他一些输入)。
所以我这样做:
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);
字符串
我用网络检查器控制台检查POST消息。我的blob被确认为与POST请求一起发送,我可以看到二进制数据发送为“image0”字段。
-----------------------------1773139883502878911993383390
Content-Disposition: form-data; name="image0"; filename="blob"
Content-Type: image/png
型
所以我用这个视图处理POST请求,可以在url /ajax-upload/
访问:
def ajax_upload(request):
if request.method == 'POST':
print(request.POST.urlencode())
型
这对我什么都没有。一旦我知道了我的blob去了哪里,我怎么能把它变成Image
?比如img = Image.open(request.POST["image0"])
2条答案
按热度按时间fkaflof61#
blob是二进制数据,所以你可以在Django的
request.body
中找到它。它的Bytes
编码(不是Unicode)。主体原始HTTP请求主体,作为字节串。这对于以与传统HTML表单不同的方式处理数据非常有用:二进制图像、XML有效负载等。
46scxncf2#
很简单,你可以...读一读:
字符串
在您的案例中:
型
Nota贝内:我知道,这个问题有点老了,但我有同样的问题,并在没有时间解决它,但我挣扎着试图通过搜索最初找到一个解决方案.