Tornado 与文件上传

Tornado 自身是不支持大文件上传的。对于接收到的文件,它会把文件内容保存在内存里,而不是像 PHP 那样保存在临时文件里。这样对于大文件,问题很明显了——内容不够。所以,Tornado 上传文件的大小限制在 100M 以下了。Tornado 官方建议使用 nginx 的上传模块来处理文件上传。


http://www.afewords.com/book/502e5cff3725176a91000004/catalog/16


import tornado.ioloop
import tornado.web

UPLOAD_FILE_PATH = '/path/to/files/'

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        args = dict(username = 'visitor')
        self.render('home.html', **args)

class UploadHandler(tornado.web.RequestHandler):
    def post(self):
        username = self.get_argument('username', 'anonymous')
        if self.request.files.get('uploadfile', None):
            uploadFile = self.request.files['uploadfile'][0]
            filename = uploadFile['filename']
            fileObj = open(UPLOAD_FILE_PATH+username+filename, 'wb')
            fileObj.write(uploadFile['body'])
        self.redirect('/')

application=tornado.web.Application([(r'/',MainHandler),('/upload', UploadHandler) ],
        template_path = 'templates',
        debug = True
        )

if __name__=='__main__':
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

<!DOCTYPE HTML>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>upload file demo</title>
</head>
<body>
  <form action="/upload" method="post" enctype="multipart/form-data">
    <input type="text" name="username" value="{{username}}"/>
    <input type="file" name="uploadfile" />
    <input type="submit" value="upload"/>
  </form>
</body>
</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值