【发布时间】:2015-01-24 00:59:25
【问题描述】:
我正在尝试将文件从 Appengine Endpoints 上传到 GCS。我正在使用 Python。当文件结束上传时,显示错误“AttributeError: 'str' object has no attribute 'ToMessage'”。
所以,如果我转到 GCS 文件资源管理器,在浏览器中,我会看到最近上传的文件名,但其大小为 0K。
这是我的模型:
class File(EndpointsModel):
_message_fields_schema = ('blob', 'url')
blob = ndb.BlobKeyProperty() #stored in GCS
url = ndb.StringProperty()
enable = ndb.BooleanProperty(default=True)
def create_file(filename):
file_info = blobstore.FileInfo(filename)
filename = '/gs'+ str(file_info.filename.blob)
gcs.open(secrets.BUCKET_NAME +'/' + filename, 'w').close()
return blobstore.create_gs_key(filename)
那么,我需要做些什么才能将文件从 Appengine Endpoints 正确上传到 GCS。
追溯:
ERROR 2014-11-25 20:35:22,654 service.py:191] Encountered unexpected error from ProtoRPC method implementation: AttributeError ('str' object has no attribute 'ToMessage')
Traceback (most recent call last):
File "/home/alpocr/workspace/google_appengine/lib/protorpc-1.0/protorpc/wsgi/service.py", line 181, in protorpc_service_app
response = method(instance, request)
File "/home/alpocr/workspace/google_appengine/lib/endpoints-1.0/endpoints/api_config.py", line 1332, in invoke_remote
return remote_method(service_instance, request)
File "/home/alpocr/workspace/google_appengine/lib/protorpc-1.0/protorpc/remote.py", line 412, in invoke_remote_method
response = method(service_instance, request)
File "/home/alpocr/workspace/mall4g-backend/libs/endpoints_proto_datastore/ndb/model.py", line 1429, in EntityToRequestMethod
response = response.ToMessage(fields=response_fields)
AttributeError: 'str' object has no attribute 'ToMessage'
【问题讨论】:
-
请包含错误的完整回溯。
-
我已经用回溯更新了帖子。
标签: python google-app-engine google-cloud-storage google-cloud-endpoints