1.后端代码
import os
import tornado.ioloop
import tornado.web
from PIL import Image
class FormsHandler(tornado.web.RequestHandler):
def get(self):
path = os.listdir('/home/pyvip/my_tornado/static/files/')
self.render('upload_file.html', path=path)
def post(self):
upload_path = '../static/files'
file_metas = self.request.files.get('file', [])
for meta in file_metas:
file_name = meta.get('filename')
file_path = os.path.join(upload_path, file_name)
with open(file_path, 'wb') as f:
f.write(meta.get('body'))
image_type = file_name.split('.')[-1]
im = Image.open(file_path)
im.thumbnail((200, 200))
if image_type == 'jpg':
aa = 'jpeg'
elif image_type == 'png':
aa = 'png'
im.save(file_path, aa)
return self.redirect('/f')
def make_app():
return tornado.web.Application([
(r"/f", FormsHandler),
],
debug=True,
static_path='../static',
template_path='../template',
)
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
2.前端代码(新建template/upload_file.html文件)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
<style>
li{
list-style: none;
float: left;
margin-left: 10px;
}
</style>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="file" name="file"><br>
<button type="submit">上传</button>
</form>
<br>
<div>
<ul>
{% for i in path %}
<li><img src="{{ static_url('files/{}'.format(i)) }}" alt=""></li>
{% end %}
</ul>
</div>
</body>
</html>
3.创建static/files文件夹,用来保存上传的图片
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7c9b28acbe52163225afd9bfb9f68256.png)
4.运行效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c8337f12bc9793f44cab6c62153cbde4.png)