5

से फ़ाइल एक्सटेंशन डाउनलोड किया गया है, वर्तमान में मैं GAE Blobstore में .docx फ़ाइलों का एक समूह संग्रहीत कर रहा हूं। मैंने हाल ही में देखा है कि ये फ़ाइलें कुछ कंप्यूटरों (विंडोज 7 के लिए आईई 9) पर फ़ाइल एक्सटेंशन के बिना डाउनलोड कर रही हैं, लेकिन दूसरों के लिए ठीक काम करती हैं (आईई 8, विंडोज 7 के लिए क्रोम)।GAE ब्लॉबस्टोर

: कैसे मैं ब्लॉब की सेवा है

Cache-Control:no-cache 
Content-Disposition:attachment; filename="causes_of_ww1_emanresu" 
Content-Length:12120 
Content-Type:application/vnd.openxmlformats-officedocument.wordprocessingml.document 
Date:Fri, 26 Oct 2012 23:54:09 GMT 
Server:Google Frontend 
X-AppEngine-Estimated-CPM-US-Dollars:$0.000033 
X-AppEngine-Resource-Usage:ms=15 cpu_ms=0 

यहाँ:

f = files.blobstore.create(mime_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document', 
          _blobinfo_uploaded_filename=filename) 
## then some code to write data and save ## 

यहां Chrome निरीक्षक से फ़ाइल के लिए प्रतिक्रिया हेडर है:

यहाँ कैसे फ़ाइलों Blobstore में जमा हो जाती है

self.send_blob(blob_info, save_as=blob_info.filename, content_type=blob_info.content_type) 

मैंने किसी भी लाभ के लिए content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document' हार्डकोडिंग की कोशिश की।

क्या हो रहा है और इसे ठीक करने के तरीके पर कोई विचार?


अनुरोध के रूप में, यहां बताया गया है कि प्रारंभ में ब्लॉब को सहेजते समय मुझे फ़ाइल जानकारी कैसे प्राप्त होती है। मैं बहुत कुछ है कि त्रुटि इस स्तर पर उत्पन्न नहीं है हूँ, लेकिन यहाँ समस्या का अग्रदूत है:

# get the file from a file_url with urlfetch 
result = urlfetch.fetch(file_url) 
headers = result.headers 

# some custom functions to return a filename 
username = self.get_username() 
filename = get_filename(title, username) 

# write the file to blobstore 
f = files.blobstore.create(mime_type=headers['content-type'], 
          _blobinfo_uploaded_filename=filename) 
with files.open(f, 'a') as data: 
    data.write(result.content) 
files.finalize(f) 
blob_key = files.blobstore.get_blob_key(f) 
+0

आप ब्लॉब को वापस कैसे भेज रहे हैं? send_blob? –

+0

हां, मैं 'self.send_blob (blob_info, save_as = blob_info.filename)' – kennysong

+0

का उपयोग कर रहा हूं, क्या आप यह सुनिश्चित करने के लिए कि वास्तव में एक्सटेंशन है, वह कोड पोस्ट कर सकता है जो वास्तव में 'फ़ाइल नाम' की गणना करता है। साथ ही, क्या आप BlobInfo का उपयोग करके जांच सकते हैं कि फ़ाइल नाम सही एक्सटेंशन के साथ संग्रहीत है। –

उत्तर

3

आह, शीर्ष पर टिप्पणियों के अनुसार, समाधान पर फाइल एक्सटेंशन जोड़ने के लिए था BlobInfo में फ़ाइल नाम विशेषता। मुझे शुरुआत में यह एहसास नहीं हुआ था कि क्रोम स्वचालित रूप से फ़ाइल एक्सटेंशन को डाउनलोड करते समय जोड़ा गया था।