2013-07-06 37 views
0

我正在使用python GAE,我想發送用戶發佈到服務器的文件。是否可以通過GAE直接郵寄上傳的二進制文件?

我可以做到這一點(我認爲)首先將文件存儲到BlobStore,然後從Blobstore中檢索它,郵件並從BlobStore中刪除它。

有沒有可能做到這一點,而不使用BlobStore?

我有這樣的代碼

up = self.request.POST.multi['upfile'] 
mail.send_mail(from_address, to_address, subject, body, 
       attachments=[(up.filename, up.file.read())]) 

它正常工作與文本文件,而是用二進制它減少了內容 例如,十六進制轉儲原始PNG文件:

 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 .PNG........IHDR 
000010 00 00 00 40 00 00 00 28 08 02 00 00 00 C1 AC 6B [email protected](.......k 
000020 BE 00 00 00 01 73 52 47 42 00 AE CE 1C E9 00 00 .....sRGB....... 
000030 00 09 70 48 59 73 00 00 0B 13 00 00 0B 13 01 00 ..pHYs.......... 
000040 9A 9C 18 00 00 00 07 74 49 4D 45 07 DD 05 0F 11 .......tIME..... 
000050 05 38 BA 66 BF EB 00 00 00 19 74 45 58 74 43 6F .8.f......tEXtCo 
000060 6D 6D 65 6E 74 00 43 72 65 61 74 65 64 20 77 69 mment.Created wi 
000070 74 68 20 47 49 4D 50 57 81 0E 17 00 00 00 1D 49 th GIMPW.......I 
000080 44 41 54 58 C3 ED C1 01 01 00 00 00 82 20 FF AF DATX......... .. 
000090 6E 48 40 01 00 00 00 00 00 00 F0 64 1E 28 00 01 [email protected](.. 
0000A0 D2 35 20 CA 00 00 00 00 49 45 4E 44 AE 42 60 82 .5 .....IEND.B`. 

和HEX轉儲上傳,郵寄和下載一個是:

 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
000000 89 50 4E 47 0D 0A 1A 0D 0A 2D 2D 3D 3D 3D 3D 3D .PNG.....--===== 
000010 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 30 36 38 30 38 34 ==========068084 
000020 32 39 32 39 3D 3D 2D 2D 2D 2D 3D 3D 3D 3D 3D 3D 2929==----====== 
000030 3D 3D 3D 3D 3D 3D 3D 3D 3D 30 36 38 30 38 34 32 =========0680842 
000040 39 32 39 3D 3D 2D 2D 929==-- 

我是新t Python,所以我甚至可能在基礎上是錯誤的。

如果使用read()函數讀取文件是否是二進制文件,那麼它是錯誤的嗎? (當我在文件系統上做它看起來很好) 還是像我這樣在GAE上發送二進制數據是錯誤的? (根據需要它是不是字節串?)

回答

0

Google App Engine從文件擴展名中推斷出MIME類型。您是否檢查過電子郵件標題以確保電子郵件提供了正確的MIME類型,以確保其正確編碼?

https://developers.google.com/appengine/docs/python/mail/attachments

+0

我對郵件下面的頭: '內容類型:多重/ mixed' 這對於附件: ' - ============ === 0683392253 == Content-Type:image/png MIME-Version:1.0 Content-Disposition:attachment; filename =「a.png」 ‰PNG - =============== 0683392253 ==' – user1335014

相關問題