6

GAE の受信メールから Amazon S3 にメールの添付ファイルを取得することができましたが、画像などの添付ファイルをブロブストアに取得する手法を知っている人はいますか?

どんな助けでも大歓迎です。

ここまでのコード (Alex の助けを借りて)

upload_url = blobstore.create_upload_url('/upload')
msg = MIMEMultipart()
msg.set_type('multipart/form-data')
msg.set_payload({'file': content})
result = urlfetch.fetch(upload_url, payload=urllib.urlencode(msg), method=urlfetch.POST, headers={'Content-Type': 'multipart/form-data'})
4

2 に答える 2

11

GAE アプリでメールを受信するには、こちらのドキュメントに従ってください。特に、次の属性をInboundEmailMessage持つクラスのインスタンスを取得します。attachments

添付ファイルのリストで、空の場合もあります。リスト内の各値は、ファイル名とファイルの内容の 2 つの要素のタプルです。

次に、これらの GAE docsに従って、「アップロード URL を作成」し、アップロード ハンドラー (通常は BlobstoreUploadHandler のサブクラス) でBlobInfoインスタンスget_upload取得し、そのメタデータをどこかに配置して、後でアプリが必要とする場合にそれらを取得できるようにします。 .

最後に、POST(上記の から取得した) データを、attachments新しく生成された独自の「アップロード URL」に変換method-POSTますapplication/x-www-form-urlencoded。データを直接アップロードしていました。これは、ブロブストアにデータを配置する「通常の」方法です。たとえば、urllib.urlencodeを使用してペイロードを準備できます)。

その「セルフ POST」は、アプリの別のインスタンスを使用してデータをブロブストアに「受信」します (電子メールを受信したインスタンスfetchは同期的に待機します)。

于 2010-03-27T23:03:47.377 に答える
2

App Engine (バージョン 1.4.3) では、データを blobstore に直接書き込むことができます
アップロード URL メソッドを使用する必要がなくなりました。

于 2011-03-30T21:54:06.200 に答える