1

私のアプリでは、App Engine ダッシュボードに正しくアップロードされる blob を作成しています。ただし、この作成されたファイルは、電子メールでそれぞれの人に送信する必要があります。これを行うには、ファイル自体を添付するか、この人がダウンロードできる静的 URL が必要です。blobkey から静的 URL を取得する方法がわかりません。

これはファイルを作成するコードですが、特別なことではありません。

    file_name = files.blobstore.create(mime_type='text/csv')
with files.open(file_name, 'a') as f:
  f.write(dataset)
files.finalize(file_name)
blob_key = files.blobstore.get_blob_key(file_name)
blob_info = blobstore.BlobInfo.get(blob_key)

new_url = blob_key.urlsafe()
4

3 に答える 3

5

ファイルを提供する場合は、ブロブストアの概要 - ブロブの提供を参照してください。

添付ファイルとして送信する場合は、Attachments Documentationを参照してください。BLOB のコンテンツを取得して、メールに添付する必要があります。

from google.appengine.ext import blobstore

# blob_key = ...

# Instantiate a BlobReader for a given Blobstore value.
blob_reader = blobstore.BlobReader(blob_key)

# Read the entire value into memory. This may take a while depending
# on the size of the value and the size of the read buffer, and is not
# recommended for large values.
blob_contents = blob_reader.read()
于 2012-09-17T17:55:30.460 に答える
0

私の使用例は異なりますが、URL パスを検索してブロブストアから静的コンテンツを提供しています。これがモデルと get 関数です。

class StaticContent(db.Model):
    body = db.BlobProperty()
    content_type = db.StringProperty()
    last_modified = db.DateTimeProperty(required=True, auto_now=True)
    etag = aetycoon.DerivedProperty(lambda x: hashlib.sha1(x.body).hexdigest())

def get(path):  
    return StaticContent.get_by_key_name(path)

私の git ハブ リポジトリのマスター ブランチの step1 タグで、私の wepapp2 ハンドラーを確認できます。

詳細な説明については、 blogstore を介した静的コンテンツの提供に関する Nick Johnson のブログ投稿も参照してください。

于 2012-09-18T04:34:19.463 に答える
0

AppEngine Blobstore docsを参照してください。Blobstore エントリを取得して操作する方法が適切に説明されています。ドキュメントの例を次に示します。

from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
  def get(self, resource):
    resource = str(urllib.unquote(resource))
    blob_info = blobstore.BlobInfo.get(resource)
    self.send_blob(blob_info)
于 2012-09-17T17:55:43.690 に答える