【问题标题】:Is there a way to set an uploaded file size limit in tornado?有没有办法在龙卷风中设置上传的文件大小限制?
【发布时间】:2012-10-05 12:43:27
【问题描述】:

我正在使用tornado 制作一个图像处理RESTful 服务,它接受通过multipart/form-data 等一般HTTP 方式上传的图像。然后我使用self.request.files 在处理程序中访问它们。

攻击者可能会尝试上传一个巨大的文件来破坏服务。有没有办法告诉 tornado 上传的文件大小限制,超过应该丢弃哪个文件并设置错误 HTTP 状态?

【问题讨论】:

    标签: http file-upload limit tornado filesize


    【解决方案1】:

    我试过了,它有效! max_buffer_size 默认值为 100M。

    import tornado.httpserver
    
    app = tornado.web.Application([
        (r'/upload/', UploadFileHandler),
    ])
    
    server = tornado.httpserver.HTTPServer(app, max_buffer_size=10485760000)  # 10G
    server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
    

    【讨论】:

      【解决方案2】:

      您可以在创建服务器时传递一个 max_buffer_size 参数。例如允许 160MB 上传”

      HTTPServer(app, max_buffer_size=167772160)
      

      【讨论】:

        【解决方案3】:

        您必须在 Web 服务器上进行配置。比如使用nginx:

        client_max_body_size 50M;
        

        编辑:HttpServer 使用的流具有 max_buffer_size 属性。 HttpServer 将不接受比这更大的上传。它的默认值为 100MB。在我看来,当达到此限制时,HttpServer 只是关闭连接而不是发送 HTTP 响应。

        【讨论】:

        • 所以问题是如何为tornado配置这个选项。
        • 抱歉,我已经编辑了我的问题以包含更多有用的信息。
        猜你喜欢
        • 2020-05-09
        • 1970-01-01
        • 1970-01-01
        • 2021-05-18
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 2020-10-09
        • 1970-01-01
        相关资源
        最近更新 更多