Tornado--基于H5图片的上传
生活随笔
收集整理的這篇文章主要介紹了
Tornado--基于H5图片的上传
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
日記
好久沒有分享過東西,一直在學(xué)習(xí)狀態(tài),學(xué)的并不好很多東西都沒有,也寫了很多demo,后續(xù)整理出來在分享,就不分享了,不為什么因?yàn)榻裉熘芰?#xff0c;好不容易雙休,大早上的一個(gè)人醒來,刷刷知乎,聽音樂、分享一篇簡單的東西吧。
切入正題
問題的引入就是有關(guān)前端和后端的結(jié)合,基于tornado框架怎么上傳圖片到服務(wù)端?
H5、CSS圖片上傳
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <div class="container"><form class="form1" method="post" action="/add" enctype="multipart/form-data"><input type="file" name="file_input" multiple="multiple"/><input type="submit" style="width: 100px;height: 40px;font-size: 20px;background-color: rgb(210,210,210)" value="確認(rèn)增加"></form> </div> </body> </html>這里是前端代碼:如果不加上 multiple 就只能上傳一個(gè)文件。enctype="multipart/form-data" 這個(gè)是必要的,必須寫。tornado代碼
import os import base64 import tornado.web import tornado.ioloop import tornado.options from tornado.options import options, define from PIL import Image# 進(jìn)行tornadao渲染效果 define("port", 8001, type=int, help="this is server port")def img_copy(img_info):"""獲取前端所傳入的圖片以及保存到自己本地和數(shù)據(jù)庫各一份。這里以傳入三張圖比呀哦,你也可以根據(jù)需要二修改。:param img_info::return:"""img1_name = dict(img_info[0])['filename']img1_body = dict(img_info[0])['body']img2_name = dict(img_info[1])['filename']img2_body = dict(img_info[1])['body']img3_name = dict(img_info[2])['filename']img3_body = dict(img_info[2])['body']all_base64 = [img1_name, img2_name, img3_name]all_name = [img1_name, img2_name, img3_name]all_body = [img1_body, img2_body, img3_body]for i in range(len(all_name)):with open('./static/person_img/' + all_name[i], 'wb') as f: # 保存到static路徑下,這樣圖片就可以在前端展示了。f.write(all_body[i])sourch_path = './static/person_img/' + all_name[i]im = Image.open(sourch_path)out = im.resize((300, 300), Image.ANTIALIAS) # 重置圖片的大小。out = out.convert('RGB')out.save(sourch_path)# with open(sourch_path, 'rb') as f: #想抓為base64保存到數(shù)據(jù)庫,后期通過數(shù)據(jù)庫展示。# base64_data = base64.b64encode(f.read())# s = base64_data.decode()# infos = 'data:image/jpeg;base64,%s' % s# all_base64.append(infos)# return all_base64class AddHandler(tornado.web.RequestHandler):"""添加信息的類對(duì)象。"""def get(self):self.render('add.html')def post(self):imgfile = self.request.files.get('file_input')img_list = img_copy(imgfile)if __name__ == '__main__':tornado.options.parse_command_line()# 創(chuàng)建appapp = tornado.web.Application(handlers=[(r'/add', AddHandler),],template_path=os.path.join(os.path.dirname(__file__), "templates"),static_path=os.path.join(os.path.dirname(__file__), "static"),)# 創(chuàng)建服務(wù)器server = tornado.httpserver.HTTPServer(app)# 監(jiān)聽端口下的appserver.listen(options.port)# 啟動(dòng)服務(wù)tornado.ioloop.IOLoop.instance().start()項(xiàng)目結(jié)構(gòu)
這是一個(gè)圖片從前端傳入到后臺(tái)的方法,你可以參考,或許有更好的方法也是未嘗不錯(cuò)的。如果可以請(qǐng)給作者留言,作者也去學(xué)習(xí)學(xué)習(xí)。今天的分享簡單結(jié)束了。
來源:https://blog.csdn.net/weixin_42812527/article/details/85012441
轉(zhuǎn)載于:https://www.cnblogs.com/qixidi/p/10190190.html
總結(jié)
以上是生活随笔為你收集整理的Tornado--基于H5图片的上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于ISO的本地yum源配置
- 下一篇: CodeMirror的使用方法