如何从BlobReferenceProperty中获取BlobStore文件名?

1 投票
1 回答
1740 浏览
提问于 2025-04-16 10:25

我在理解怎么做一件应该很简单的事情时遇到了困难。

class Spam(db.Model):
    egg = blobstore.BlobReferenceProperty(blobstore.BlobKey, required=False)


class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        spam = models.Spam(egg=blob_info.key())
        spam.put()

到现在为止都还不错,对吧?现在我想显示这个文件。

egg_blob = blobstore.BlobInfo.get(spam.egg) #error below is thrown here

self.redirect('/serve/%s' % egg_blob.key())


BadArgumentError: Expected str or BlobKey; received <google.appengine.ext.blobstore.blobstore.BlobInfo object at 0x3ed8970> (a BlobInfo)

我漏掉了什么呢?spam.egg确实是一个BlobKey。

1 个回答

2

不,我觉得egg_blob(也就是spam.egg)是一个BlobInfo。拿到spam.egg之后,我觉得你就不需要再去blobstore找它了,对吧?你有没有试过直接使用spam.egg的引用?也就是说,试试这样做:

self.redirect('/serve/%s' % spam.egg.key())

撰写回答