Tornado 与文件上传
2013-12-18 22:40
387 查看
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>
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>
相关文章推荐
- 关于tornado文件上传与存储
- Python tornado上传文件
- 基于tornado的文件上传demo
- Tornado上传文件
- tornado 7、文件上传下载,验证码直接渲染到浏览器
- 第二百七十三节,Tornado框架-文件上传
- Web基础(7)Tornado、Cookie、Session、Ajax、文件上传
- tornado 来实现简单的文件上传功能
- Tornado 上传文件及存储
- Tornado 上传文件及存储
- tornado 实现文件上传和下载
- tornado+nginx上传视频文件
- ERROR:tornado上传文件过大超出范围报错
- 【Ceph】基于Tornado的Ceph文件上传与下载及在线预览
- python tornado实现简单的文件上传功能
- java做的比较完善的FTP连接上传下载文件
- JSP中上传文件包
- 自定义input[file](文件上传控件)样式-兼容IE6
- Sharepoint 2010 无法上传文件的问题
- asp.net 文件上传验证是否是真正的图片格式