2010-06-12 11 views
9

से पढ़ने पर त्रुटि "बंद फ़ाइल पर I/O ऑपरेशन" त्रुटि देता है मेरे पास दो छवि फ़ील्ड, एक स्रोत छवि और थंबनेल वाला मॉडल है।Django एक सहेजी गई छविफिल्ल्ड

जब मैं नई स्रोत छवि को अद्यतन करता हूं, इसे सहेजता हूं और फिर थंबनेल पर फसल/स्केल करने के लिए स्रोत छवि को पढ़ने का प्रयास करता हूं, मुझे पीआईएल से "बंद फ़ाइल पर आई/ओ ऑपरेशन" त्रुटि मिलती है।

यदि मैं स्रोत छवि को अद्यतन करता हूं, तो स्रोत छवि को सहेजें नहीं, और फिर स्रोत छवि को फसल/स्केल पर पढ़ने का प्रयास करें, मुझे पीआईएल से "बंद फ़ाइल से पढ़ने का प्रयास" त्रुटि मिलती है।

दोनों मामलों में स्रोत छवि वास्तव में सहेजी जाती है और बाद में अनुरोध/प्रतिक्रिया लूप में उपलब्ध होती है।

यदि मैं एक अनुरोध/प्रतिक्रिया पाश में फसल/स्केल नहीं करता हूं बल्कि इसके बजाय एक पृष्ठ पर अपलोड करता हूं और फिर किसी अन्य पृष्ठ में फसल/स्केल करता हूं तो यह सब ठीक काम करता है।

ऐसा लगता है कि पीआईएल या डीजेगो फ़ाइल स्टोरेज द्वारा कुछ कैश किए गए बफर को फिर से इस्तेमाल किया जा रहा है। सहेजने के बाद एक ImageField पठनीय बनाने के बारे में कोई विचार?

अधिक जानकारी ... ImageField सहेजने के बाद अंतर्निहित फ़ाइल को स्पष्ट रूप से बंद कर रहा है। क्या ImageField के रीफ्रेश को मजबूर करने का कोई तरीका है? मैं तलाश (0) का उपयोग कर कुछ लोगों को देखता हूं लेकिन यह इस मामले में काम नहीं करेगा।

उत्तर

17

ImageField में एक बग है जिसे मैंने ट्रैक किया है और submitted to the django project

आप एक ImageField के साथ एक सरल मॉडल है ?, निम्नलिखित कोड एक "बंद फाइल पर मैं/हे आपरेशन" के साथ असफल हो जायेगी:

:

instance = MyClass.objects.get(...) 
w = instance.image.width 
h = instance.image.height 
original = Image.open(instance.image) 

काम के आसपास फ़ाइल को फिर से खोलने के लिए है

instance = MyClass.objects.get(...) 
w = instance.image.width 
h = instance.image.height 
instance.image.open() 
original = Image.open(instance.image) 
+0

यदि कोई और सोच रहा है कि मैं जैसा सोच रहा हूं, तो ऊपर उल्लिखित छवि पीआईएल की छवि है - पीआईएल आयात छवि से – Steve

+1

"imageField.open() फ़ाइल की सामग्री को परिवर्तित नहीं करती है, लेकिन यह सूचक को रीसेट करता है" –

संबंधित मुद्दे

 संबंधित मुद्दे