【发布时间】:2017-11-22 19:02:26
【问题描述】:
对于一个应用程序,我在 blobstore 和云存储上都上传了文件。
我这样做是通过以下方式生成上传链接:
upload_url = blobstore.create_upload_url('/upload', gs_bucket_name=app_identity.get_default_gcs_bucket_name())
文件同时保存在 blobstore 和云存储中,我可以执行 GQL 查询以从 blobstore 检索我想要的任何文件。但是,我无法找到在云存储中获取文件名的方法。
当文件上传到云存储时,它会自动分配一个长文件名。
我找到了一个命令,但我不知道如何使用它:https://cloud.google.com/appengine/docs/standard/python/refdocs/google.appengine.ext.blobstore.blobstore#google.appengine.ext.blobstore.blobstore.BlobInfo
当我尝试时:
cloud_store = []
for upload in uploads:
gcs_link = blobstore.BlobInfo(db.get(upload)).gs_object_name
cloud_store.append(gcs_link)
这里uploads 存储对具有blobstore.BlobReferenceProperty() 属性的种类执行的GQL 查询的结果。
我收到此错误:
BadArgumentError: Expected an instance or iterable of (<type 'basestring'>, <class 'google.appengine.api.datastore.Entity'>, <class 'google.appengine.api.datastore_types.Key'>); received <models.PhotoAlbum object at 0x00000000054CD7B8> (a PhotoAlbum).
当我尝试时:
cloud_store = []
for upload in uploads:
gcs_link = blobstore.BlobInfo(upload.key()).gs_object_name
cloud_store.append(gcs_link)
我收到此错误:
TypeError: Must provide Entity or BlobKey
【问题讨论】:
标签: google-cloud-platform google-cloud-storage blobstore