5

Şu anda GAE Blobstore ürününde bir grup .docx dosyası depolamıyorum. Geçenlerde bu dosyaların bazı bilgisayarlarda (Windows 7 için IE 9) dosya uzantıları olmadan indirildiğini, ancak başkaları için iyi çalıştığını fark ettim (IE 8, Windows 7 için Chrome). İşte GAE, indirilen dosya uzantılarını blobstore'dan indir

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

Krom denetçisi gelen dosya için yanıt başlıklarını var:

: Burada

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 

ben damla nasıl hizmet ediyor İşte

dosyaları Blobstore saklanır nasıl

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

content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document' numaralı hardcoding'i boşa çıkarmaya çalıştım bile.

Neler olduğu ve nasıl düzeltileceği hakkında herhangi bir fikir var mı?


İstenirse, başlangıçta bloğu kaydederken dosya bilgilerini nasıl edinebilirim. Ben hata bu seviyede oluşan olmadığını oldukça eminim, ama burada sorunun habercisi:

# 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

Blob'u nasıl geri gönderiyorsunuz? send_blob? –

+0

Evet, ben kullanıyorum 'self.send_blob (blob_info, save_as = blob_info.filename)' – kennysong

+0

Uzantı olduğundan emin olmak için aslında 'dosya adını' hesaplayan kodu gönderir misiniz? Ayrıca, dosya isminin doğru uzantı ile saklandığı BlobInfo kullanarak kontrol edebilirsiniz. –

cevap

3

Ah, üstündeki yorum göre, çözüm üzerine dosya uzantısı eklemek oldu BlobInfo'da dosya adı özniteliği. Chrome'un indirme sırasında otomatik olarak dosya uzantısını otomatik olarak eklediğinden, bunun gerekli olduğunu fark etmedim.