GAE Python webapp2 图片上传错误

GAE Python webapp2 image upload error

我正在做一个项目,我试图在 blob 存储中上传图像。但是我收到这个错误

File "C:\Users\shaizi\PycharmProjects\simpletestapp\Update.py", line 51, in post

blob_info = upload_files[0]
IndexError: list index out of range

我的html表单代码是

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

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

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

def post(self):

    blobstore.create_upload_url('/post/signup')

    upload_files = self.get_uploads('pict')

    blob_info = upload_files[0]

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

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

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

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

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

您使用后端代码从应用引擎获取此变量:

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

在我的例子中,使用多部分表单,我得到的文件数据如下:

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

此致。