【问题标题】:Appengine Blobstore: Index out of rangeAppengine Blobstore:索引超出范围
【发布时间】:2015-02-03 22:21:50
【问题描述】:

我正在尝试使用 Blobstore API 将文件上传到 Google Cloud Storage。图像正确上传,但随后我尝试处理它(将其链接到用户)。我收到错误:

Index out of range

这是我的代码:

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get_file_infos('file')  # 'file' is file upload field in the form
        file_info = upload_files[0]

        #self.response.headers['Content-Type'] = 'application/x-www-form-urlencoded'
        #self.response.headers.add_header('Access-Control-Allow-Origin', '*')
        gcs_filename = file_info.gs_object_name
        file_key = blobstore.create_gs_key(gcs_filename)

        File(file=file_key, owner=utils.get_current_user(), 
                    url= images.get_serving_url(file_key)).put()

我的代码放在file_info = upload_files[0] 行。

【问题讨论】:

  • 这只是表示upload_files 没有内容。尝试将 len(upload_files) 的结果发送到日志或使用调试器并直接查看内容。
  • len(upload_files) 返回“1”。
  • 我删除了 get_file_infos('file') 中的 de 'file' 参数。现在它可以正确获取文件,但我有一个新问题生成 blobKey throw create_gs_key()。说是预期的 BlobKey,得到了“{large-string}”。有什么想法吗?
  • 我打开了这个帖子:stackoverflow.com/questions/27322887/…
  • 我对 Java Blobstore 有类似的问题:stackoverflow.com/questions/27340269/… 有人可以看看并推荐一个解决方法吗?有一个价值 50 代表的活跃赏金。

标签: python google-app-engine google-cloud-platform google-cloud-storage google-cloud-python


【解决方案1】:

将文件放入 Google Cloud Storage 存储分区的代码在哪里?

我认为问题可能出在这两行,具体取决于您如何实现 GCS 上传...

gcs_filename = file_info.gs_object_name
file_key = blobstore.create_gs_key(gcs_filename)

如果项目来自 GCS,gs_object_name 应该只返回有意义的结果。如果 gcs_filename 不正确,这也会导致 create_gs_key() 失败。

关于如何将 blobstore API 与 Google Cloud Storage 一起使用,请参阅这篇文章了解详细信息 - https://cloud.google.com/appengine/docs/python/blobstore/#Python_Using_the_Blobstore_API_with_Google_Cloud_Storage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多