Python tornado上传文件的功能
Tornado是一种Web服务器软件的开源版本。Tornado和主流Web服务器框架(包括大多数Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
得利于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接,因此Tornado是实时Web服务的一个理想框架。
在web开发过程中,文件上传是经常用到的功能,比如上传附件,上传照片等。下面我们来介绍一下利用tornado来实现简单的文件上传功能。
普通上传
#coding:utf-8 importtornado.ioloop importtornado.web importshutil importos importjson classFileUploadHandler(tornado.web.RequestHandler): defget(self): self.write('''UploadFile
''') defpost(self): ret={'result':'OK'} upload_path=os.path.join(os.path.dirname(__file__),'files')#文件的暂存路径 file_metas=self.request.files.get('file',None)#提取表单中‘name'为‘file'的文件元数据 ifnotfile_metas: ret['result']='InvalidArgs' returnret formetainfile_metas: filename=meta['filename'] file_path=os.path.join(upload_path,filename) withopen(file_path,'wb')asup: up.write(meta['body']) #ORdootherthing self.write(json.dumps(ret)) app=tornado.web.Application([ (r'/file',FileUploadHandler), ]) if__name__=='__main__': app.listen(8080) tornado.ioloop.IOLoop.instance().start()
采用ajax上传
采用ajax上传,需要修改一下前端发送请求的方式。可参照如下方式:
UploadFile
注意
tornado处理文件上传时,会把整个文件放在内存中。
如果有上传大文件的需求,一般会使用nginx的文件上传模块(第三方模块,需要编译)。
总结
到此这篇关于Pythontornado上传文件的功能的文章就介绍到这了,更多相关Pythontornado上传文件内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!