Python Tornado文件上传提供了KeyError

时间:2017-09-26 13:22:34

标签: python-3.x tornado

我试图编写一个基于龙卷风Web服务器的非常简单的python脚本来上传文件。但我得到了KeyError'虽然密钥是在html格式中是可以的。

这是python代码,只是为了查看上传的文件名。

import tornado.ioloop
import tornado.web

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Bismillahir Rahmanir Raheem")
        self.render('form.html')

class UploadHandler(tornado.web.RequestHandler):
    def post(self):
        self.write("Alhamdulillah, here")
        if  self.request.files is not None:
            self.write("Inside the if")
            uploadFile = self.request.files['my_file'][0]
            self.write(uploadFile['filename'])

def make_app():
    return tornado.web.Application([
      (r"/", IndexHandler),
      (r"/upload", UploadHandler)
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

html表格如下:

<html>
    <head>
        <title>Testing file upload</title>
    </head>
    <body>
        <h1>Testing file upload</h1>
        <form enctype="multipart/formdata" method="post" action="/upload">
            <input type="file" name="my_file"/>
            <input type="Submit" name="upload" value="Upload"/>
        </form>
    </body>
</html>

但每次我选择一个文件并按下上传按钮我都会得到

500:内部服务器错误

在PyCharm编辑器中,我收到以下错误:     File&#34; C:/Users/Mushfique/Desktop/file-upload/upload.py" ;,第14行,在帖子中     uploadFile = self.request.files [&#39; my_file&#39;] [0]

  

KeyError:&#39; my_file&#39;错误:tornado.access:500 POST / upload(:: 1)1.00ms

虽然在html表单中我已经使用了my_file&#39;作为文件输入字段名称。

1 个答案:

答案 0 :(得分:1)

你在那里输了一个错字:

<form enctype="multipart/formdata" ...>

它应该是multipart/form-data(注意连字符)。