Django

2016-03-04 2 views
5

के साथ ब्लॉब को पोस्ट और पुनर्प्राप्त कैसे करें मेरे पास blob है। यह एक छवि है जिसे मैंने <canvas> का उपयोग करके आकार बदल दिया। मैंने सत्यापित किया है कि डेटा the MDN guide के अनुसार परीक्षण करने के लिए इसे यूआरएल में परिवर्तित करके सही है। अब तक सब ठीक है। अब, मैं इसे अपने Django सर्वर (कुछ अन्य इनपुट के साथ) में पोस्ट करना चाहता हूं।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 अनुरोध के साथ भेजा गया है और मैं बाइनरी डेटा को "image0" फ़ील्ड के रूप में भेज सकता हूं।

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

यह मैं कुछ भी नहीं देता है:

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

तो मैं इस दृश्य के साथ पोस्ट अनुरोध, यूआरएल /ajax-upload/ पर सुलभ संभाल। एक बार जब मुझे पता चला कि मेरा ब्लॉब कहाँ गया, तो मैं इसे Image में कैसे बदल सकता हूं? img = Image.open(request.POST["image0"]) की तरह कुछ?

+0

क्या request.FILES में दिया जाता है? – Jerzyk

+0

अनुरोध। FILES खाली प्रतीत होता है: '' – Escher

उत्तर

2

एक ब्लॉब बाइनरी डेटा है, इसलिए आप इसे Django में request.body में पा सकते हैं। इसका Bytes एन्कोड किया गया (यूनिकोड नहीं)।

HttpRequest.body एक बाइट स्ट्रिंग के रूप में कच्चे HTTP अनुरोध शरीर। यह पारंपरिक HTML रूपों की तुलना में अलग अलग तरीकों से डाटा प्रोसेसिंग के लिए उपयोगी है: द्विआधारी छवियों, एक्सएमएल पेलोड आदि

+1

कृपया अपने स्रोत को लिंक करें। –

+0

@ जे एफ - 'HttpRequest.body' पर दिए गए लिंक पर क्लिक करें और मुझे लगता है कि आप पाएंगे कि @ सी 14 एल ने जो कुछ भी पूछा है वह पहले ही कर चुका है। – jwpfox