It looks like BlobStore upload is still broken. We use Python 2.7 and here is the boilerplate
class MainHandler(webapp2.RequestHandler):
def getUploadForm(self):
upload_url = blobstore.create_upload_url('/imageUpload')
self.response.write('<html>\n<body>\n')
self.response.write('<form action="%s" method="POST" enctype="multipart/form-data">\n'% upload_url)
self.response.write('<input type="file" name="file" accept=".png"><br>\n')
self.response.write('<input type="submit" name="submit" value="Submit"></form>\n')
self.response.write('</body>\n</html>\n\n')
.....
After the user hits the Submit button, a 500 error will be returned. The expected behavior is that the image will be uploaded to BlobStore and then navigate to myDomain.com/imageUpload. Note that the 500 error occurred before navigating to image upload success handler myDomain.com/imageUpload. Because the issue is not on our codebase, we cannot see any errors/traces on Google Cloud Console/App Engine Dashboard.
The same code has worked for at least 5 years. We understand that we need to move to Google Cloud Storage and switch to Python 3, but we have a complex system and it will be a huge undertaking for us. I really hope Google can fix this issue as soon as possible. Thanks!!