激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python的Tornado框架實現圖片上傳及圖片大小修改功能

Python的Tornado框架實現圖片上傳及圖片大小修改功能

2020-08-30 10:30cangmean Python

Tornado是一個異步的Python Web開發框架,同時也是一個優秀的異步服務器開發庫,這里我們將來講解一下Python的Tornado框架實現圖片上傳及圖片大小修改功能方面的一些重點:

圖片的上傳

上傳圖片使用了表單提交, 下面是html部分, enctype="multipart/form-data"表示不對字節進行編碼,上傳文件類型時需指定. input標簽的 type="file" 指定上傳類型.

?
1
2
3
<form action="/" enctype="multipart/form-data" method="post">
  <input type="file" name="headimg">
</form>

下面是tornado接受文件的部分

?
1
2
3
4
5
6
7
8
9
10
11
class UploadHandler(BaseHandler):
  def post(self):
    # 這部分就是上傳的文件,想要查看更多可以print self.request看看
    # 該文件返回一個元素為字典的列表
    imgfile = self.request.files.get('headimg')
    for img in imgfile:
      # img有三個鍵值對可以通過img.keys()查看
      # 分別是 'filename', 'body', 'content_type' 很明顯對應著文件名,內容(二進制)和文件類型
      with open('./static/uploads/' + img['filename'], 'wb') as f:
        # 文件內容保存 到'/static/uploads/{{filename}}'
        f.write(f['body'])

這樣就可以通過/static/uploads/文件名的形式訪問

對圖片大小進行修改

下面將寫對圖片進行的resize

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class UploadHandler(BaseHandler):
  @tornado.web.authenticated
  def post(self):
    # 應該寫到上面, 為了顯示寫到了函數內
    import time
    # PIL 是 python中對圖片進行操作的模塊, 感興趣可以去看一下
    from PIL import Image
    # 可以想文件一樣使用, 只是存放在內存
    from cStringIO import StringIO
 
    # 判斷上傳文件大小
    size = int(self.request.headers.get('Content-Length'))
    if size / 1000.0 > 2000:
      self.write("上傳圖片不能大于2M.")
    imgfile = self.request.files.get('headimg')
    for img in imgfile:
      # 對文件進行重命名
      name = str(time.strftime('%Y%m%d%'), time.localtime())\
          + '_' + self.current_user + '_headimg.png'
 
      with open('./static/uploads/' + name, 'wb') as f:
        # image有多種打開方式,一種是 Image.open('xx.png')
        # 另一種就是 Image.open(StringIO(buffer))
        im = Image.open(StringIO(img['body']))
        # 修改圖片大小resize接受兩個參數, 第一個是寬高的元組數據,第二個是對圖片細節的處理,本文表示抗鋸齒
        im = im.resize((72, 72), Image.ANTIALIAS)
        # 打開io 就像文件一樣
        im_file = StringIO()
        im.save(im_file, format='png')
        # 這是獲取io中的內容
        im_data = im_file.getvalue()
        f.write(im_data)

這樣就可以上傳的時候對文件大小進行修改

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久亚洲美女啪啪 | 污污的视频在线观看 | 性猛交ⅹxxx乱巴西 在线播放中文 | 国产精品久久久久久久久粉嫩 | 久久99精品久久久久久久久久久久 | 全黄性性激高免费视频 | 亚洲3p激情在线观看 | 亚洲国产成人一区二区 | 91九色网址 | 国产精品久久久久久久模特 | 欧美一级黄色影院 | 西川av在线一区二区三区 | 自拍亚洲伦理 | 亚洲成人在线视频网 | 国产免费观看a大片的网站 欧美成人一级 | 国产一区国产二区在线观看 | 国产亚洲综合一区二区 | 91免费在线电影 | 成人免费入口 | 神马顶级推理片免费看 | 爽毛片 | 欧美性生活久久久 | hd porn 4k video xhicial| 久久艹综合| 成品片a免人视频 | 91久久国产露脸精品免费 | 国产一级一国产一级毛片 | 亚洲性综合网 | 久久久久亚洲国产精品 | 视频www | 黄色一级片在线免费观看 | 成人资源在线观看 | 黑人三级毛片 | 久久国产精品电影 | 欧美一级黄色片免费观看 | 国产精品久久久久久久久久尿 | 国产人成免费爽爽爽视频 | 国产亚洲精品久久久久久大师 | 国产精品欧美久久久久一区二区 | 国产精品午夜未成人免费观看 | 久久九九热re6这里有精品 |