tornado上传大文件问题解决方法
tornado默认上传限制为低于100M,但是由于需要上传大文件需求,网上很多说是用nginx,但我懒,同时不想在搞一个服务了。
解决方法:
server = HTTPServer(application, max_buffer_size=504857600, max_body_size=504857600) server.bind(options.port) server.start(5) # Forks multiple sub-process tornado.ioloop.IOLoop.current().start()
具体再去看源码,stackoverflow和/segmentfault.com给了我提示,然后跑去看了眼源码
TCPserver
.....
From上传文件
#!/usr/bin/env python # -*- coding:utf-8 -*- import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.render('index.html') def post(self, *args, **kwargs): file_metas = self.request.files["fff"] # print(file_metas) for meta in file_metas: file_name = meta['filename'] import os file_name = os.path.join("img", file_name) with open(file_name,'wb') as up: up.write(meta['body']) settings = { 'template_path': 'template', } application = tornado.web.Application([ (r"/index", MainHandler), ], **settings) if __name__ == "__main__": application.listen(8000) tornado.ioloop.IOLoop.instance().start()