python tornado实现简单的文件上传功能

在web应用开发的功能中,文件的上传是经常会使用到的功能,本文就是利用python tornado框架,实现了一个简单的文件上传功能

import tornado.web
import tornado.ioloop
import tornado.httpserver
import os
class UpFileHandler(tornado.web.RequestHandler):
    #tornado.httputil.HTTPFile对象三个属性
    #1.filename文件名
    #2.body文件内部实际内容
    #3.type文件的类型
    def get(self, *args, **kwargs):
        self.write('<!DOCTYPE html>\
                    <html lang="en">\
                    <head>\
                        <meta charset="UTF-8">\
                        <title>Title</title>\
                    </head>\
                    <body>\
                        <form action="fileup" method="post" enctype="multipart/form-data">\
                            <input type="file" name="file1">\
                            <input type="file" name="file2">\
                            <input type="submit" value="shangchuan">\
                        </form>\
                    </body>\
                    </html>')
        #write里面内容是一个简单的完整页面,为了博客方便,放在了一起,建议分开
    def post(self, *args, **kwargs):
        #查看上传文件的完整格式,files以字典形式返回
        #print(self.request.files)
        #{'file1':
        #[{'filename': '新建文本文档.txt', 'body': b'61 60 -83\r\n-445 64 -259', 'content_type': 'text/plain'}],
        #'file2':
        filesDict=self.request.files
        for inputname in filesDict:
            #第一层循环取出最外层信息,即input标签传回的name值
            #用过filename键值对对应,取出对应的上传文件的真实属性
            http_file=filesDict[inputname]
            for fileObj in http_file:
                #第二层循环取出完整的对象
                #取得当前路径下的upfiles文件夹+上fileObj.filename属性(即真实文件名)
                filePath=os.path.join(os.path.dirname(__file__),fileObj.filename)
                with open(filePath,'wb') as f:
                     f.write(fileObj.body)
        self.write('上传成功')
if __name__ == '__main__':
    app=tornado.web.Application(
        [(r'/fileup',UpFileHandler)])
    httpserver=tornado.httpserver.HTTPServer(app)
    httpserver.bind(8000)
    httpserver.start()
    tornado.ioloop.IOLoop.instance().start()

以上就是一个简单的文件上传功能,祝大家tornado的学习一帆风顺

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值