Tornado 处理器认为 POST 缺少参数,而 Firebug 显示参数已发送

1 投票
1 回答
2767 浏览
提问于 2025-04-16 00:09

我有一个简单的表单,使用的是POST方法,里面有一个文本框和一个文件上传功能。点击提交后,我在Firebug中可以看到POST请求的内容,如下所示:

Parts       multipart/form-data
posttext    Some text
image   BlahJFIFBlahExifBlahPhotoshopBlahBinaryStuff etc...

接收这个请求的Tornado处理器看起来是这样的:

class NewPostHandler(BaseHandler, MessageMixin):
    @tornado.web.authenticated 
    def post(self):
        message = {
            'posttext':self.get_argument('posttext'), 
            'image':self.get_argument('image'),
            etc          

但是Tornado的处理器返回了:

[W 100618 23:07:32 web:775] 404 POST /a/message/new (127.0.0.1): Missing argument image

我不太确定我哪里做错了。我是不是可以理解为“argument”指的是输入元素的“name”属性?我该怎么让处理器识别这个参数呢?

谢谢你的帮助,我已经为这个问题挣扎了一个小时,必须承认我有点困惑了!

1 个回答

4

在上传文件的时候,你应该使用 self.request.files,而不是 self.get_argument()

撰写回答