Facepalm अद्यतन: बाहर कर देता है मैं भूल गया था/तथ्य यह है कि मैं अपनी डिफ़ॉल्ट भंडारण के रूप में https://github.com/gtaylor/django-athumb (यहां तक कि से S3BotoStorage के एक पुराने कांटा उपयोग कर रहा था की अनदेखी हालांकि मैं django-storages स्थापित किया था)। Django-storages का वर्तमान संस्करण इस समस्या से पीड़ित नहीं है। समस्या यह थी कि जब वे बीओटी हिट करते हैं तो कंटेंट-टाइप हेडर यूनिकोड थे, और बीओटी एडब्ल्यूएस पर भेजने से पहले urllib.quoteplus
का उपयोग करके यूनिकोड से निकलता है। यह वास्तव में बोटो की गलती नहीं है क्योंकि शीर्षकों को प्रति HTTP किसी भी तरह गैर-यूनिकोड तारों में परिवर्तित किया जाना है। अधिक इंडिपथ विश्लेषण के लिए https://github.com/boto/boto/issues/1669 देखें।फ़ाइलें S3BotoStorage साथ S3 पर अपलोड अंत के साथ invalidly सामग्री प्रकार मेटा डेटा भाग निकले
मूल प्रश्न
मैं अमेज़न S3 पर फ़ाइलें अपलोड करने संयोजन के रूप में उपयोग कर रहा हूँ django_storage's S3BotoStorage एक FileField के साथ।
downloadable_file = FileField(max_length=255, upload_to="widgets/filedownloads", verbose_name="file")
सेटिंग्स में: यहाँ मेरी क्षेत्र है
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
सब कुछ अपलोड करने के रूप में जहाँ तक काम करता है/डाउनलोड करने चला जाता है।
हालांकि, फाइलें मेरी बाल्टी में गलत सामग्री-प्रकार के साथ संग्रहीत हो रही हैं। जब मैं अपने एडब्ल्यूएस एस 3 कंसोल में फ़ाइलों के लिए मेटाडेटा देखता हूं, तो फ़ाइल का सामग्री-प्रकार "एप्लिकेशन/पीडीएफ" के बजाय "एप्लिकेशन% 2 एफपीडीएफ" के रूप में दिख रहा है, जो यह होना चाहिए।
मामले में आप कहते हैं कि इससे कोई फर्क नहीं चाहिए, यह फर्क पड़ता है। Google क्रोम का अंतर्निहित पीडीएफ रीडर एक अवैध सामग्री-प्रकार के साथ पीडीएफ पर लटका होगा, और एक क्लाइंट इसे मेरे ध्यान में लाएगा।
Here's an example of a file uploaded through django-storages/boto. यदि आप क्रोम के अंतर्निर्मित पीडीएफ रीडर का उपयोग कर रहे हैं तो मुझे लगता है कि यह लटकता है, जैसे यह मेरे लिए और ग्राहक ने इसकी सूचना दी है। यदि आप गैर-क्रोम ब्राउज़र, या एडोब प्लगइन का उपयोग कर रहे हैं, या डिस्क पर फ़ाइल डाउनलोड कर रहे हैं तो आप शायद ठीक होंगे।
यदि मैं मैन्युअल रूप से एडब्ल्यूएस कंसोल के माध्यम से 'एप्लिकेशन/पीडीएफ' (मानक विकल्प में से एक) में सामग्री-प्रकार मेटाडेटा को बदलता हूं तो यह ठीक है।
मुझे लगता है कि यह फ़ाइल को अपलोड करने के लिए एडब्ल्यूएस पॉलिसी दस्तावेज़ बनाने के तरीके के साथ आंतरिक रूप से कुछ बग है, क्योंकि मैं यहां मानक उपयोग के बाहर कुछ भी नहीं कर रहा हूं। हालांकि, मैंने बोटो कोड के माध्यम से कदम रखा है और यह नहीं पता कि यह वास्तव में भागने से कहां से निकलता है।
क्या कोई या तो काम के बारे में सुझाव दे सकता है, या मुझे बोटो में अपमानजनक कोड पर मार्गदर्शन कर सकता है ताकि मैं इसे पैच कर सकूं और पुल अनुरोध जमा कर सकूं?
Boto == 2.9.5 Django-भंडार == 1.1.8
पुरस्कार के लिए जा रहे अपने समय के बाद से इनाम निकलता जा रहा है और इस होनहार लग रहा है। मैं आपको बता दूंगा कि यह कैसे जाता है। –
धन्यवाद, मैं शायद बहुत दूर भविष्य में पीडीएफ अपलोड के साथ गड़बड़ कर रहा हूं, इसलिए मुझे उम्मीद है कि यह भी काम करता है। – Fiver
क्या यह काम नहीं करता है? – Fiver