【问题标题】:GAE Python webapp2 image upload errorGAE Python webapp2图片上传错误
【发布时间】:2016-11-01 16:19:47
【问题描述】:

我正在做一个项目,我正在尝试将图像上传到 blob 商店。但是我收到了这个错误

文件“C:\Users\shaizi\PycharmProjects\simpletestapp\Update.py”,行 51,在帖子中

blob_info = upload_files[0]
IndexError: 列表索引超出范围

我的html表单代码是

<form id="signup" method="post" action="/update" enctype="multipart/form-data">

 <label>Change image:</label>
        <input type="file" name="pict" ><br>
</form>

将图片上传到 Blob 存储的 Python 代码:

def post(self):

    blobstore.create_upload_url('/post/signup')

    upload_files = self.get_uploads('pict')

    blob_info = upload_files[0]

【问题讨论】:

  • 你能显示self.get_uploads的代码吗?
  • 上传文件的内置函数。

标签: python google-app-engine blobstore webapp2


【解决方案1】:

就我而言,使用多部分表单,我得到的文件数据如下:

self.request.get('<name_in_form>')

对于你的情况,应该是:

self.request.get('pict')

在任何情况下,如果可能,尽量避免使用 blobstore,因为 Google 建议使用 Cloud Storage,因为 blobstore 看起来将来会被弃用,几个参考:

https://cloud.google.com/appengine/docs/python/blobstore/

Google Blobstore versus Google cloud storage

问候。

【讨论】:

    【解决方案2】:

    我认为你必须使用 form_url 变量:

    `   <form method="post" action="{{ form_url }}" accept-charset="UTF-8"
                      enctype="multipart/form-data">`
    

    您可以使用后端代码从 appengine 获取此变量:

    class UploadPage(BaseRequestHandler):
        def get(self):
            form = UploadForm()
            self.render('upload.html', {
                    'form': form,
                    'form_url': blobstore.create_upload_url('/upload_form'),
                })
    

    【讨论】:

      【解决方案3】:

      实际上我必须将操作设置为上传 url。

      <form id="signup" method="post" action="/post/signup" enctype="multipart/form-data">
      
       <label>Change image:</label>
              <input type="file" name="pict" ><br>
      </form>
      

      【讨论】:

        猜你喜欢
        • 2012-12-02
        • 2015-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多