2016-03-04 16 views
5

私にはblobがあります。 <canvas>を使用してサイズを変更した画像です。私はthe MDN guideとしてそれをテストするためにそれをURLに変換することによってデータが正しいことを確認しました。ここまでは順調ですね。さて、私はDjangoサーバに(他の入力とともに)投稿したいと思います。djangoでブロブを投稿して取得する方法

だから私はこれを行う:私はネットワークインスペクタコンソールでPOSTメッセージを検査

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); 

を。私のBLOBはPOSTリクエストで送られてきたものとして確認され、私はバイナリデータを "image0"フィールドとして送ることができます。

-----------------------------1773139883502878911993383390 
Content-Disposition: form-data; name="image0"; filename="blob" 
Content-Type: image/png 

だから私は、URL /ajax-upload/でアクセスこのビューでPOSTリクエストを処理:

def ajax_upload(request): 
    if request.method == 'POST': 
     print(request.POST.urlencode()) 

これは私に何も与えません。私のブロブがどこに行ったのかがわかったら、どうすればImageにすることができますか?何かimg = Image.open(request.POST["image0"])のようなもの?

+0

request.FILESに返されるでしょうか? – Jerzyk

+0

request.FILESは空白です: '' – Escher

答えて

2

ブロブはバイナリデータなので、Djangoのrequest.bodyにあります。そのBytesがエンコードされています(ユニコードではありません)。

HttpRequest.body バイト文字列などの生のHTTPリクエストボディ。これは、従来のHTMLフォームとは異なる方法でデータを処理するために有用である:二値画像、XMLペイロードなど

+1

あなたのソースをリンクしてください。 –

+0

@J F - 'HttpRequest.body'のリンクをクリックすると、@ C14Lがあなたが求めたことをすでに行っていることがわかります。 – jwpfox

関連する問題