• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python的Tornado框架实现图片上传及图片大小修改功能

Python的Tornado框架实现图片上传及图片大小修改功能

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了tornado python,python3 tornado,python tornado教程,tornado框架,tornado等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

图片的上传

上传图片使用了表单提交, 下面是html部分, enctype="multipart/form-data"表示不对字节进行编码,上传文件类型时需指定. input标签的 type="file" 指定上传类型.

<form action="/" enctype="multipart/form-data" method="post">
  <input type="file" name="headimg">
</form>
</div>

下面是tornado接受文件的部分

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'])
</div>

这样就可以通过/static/uploads/文件名的形式访问

对图片大小进行修改

下面将写对图片进行的resize

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)

</div>

这样就可以上传的时候对文件大小进行修改

</div>

您可能想查找下面的文章:

  • 使用Python的Tornado框架实现一个Web端图书展示页面
  • 使用Python的Tornado框架实现一个Web端图书展示页面
  • Python的Tornado框架实现异步非阻塞访问数据库的示例
  • Python的Tornado框架实现图片上传及图片大小修改功能
  • 在Python的Tornado框架中实现简单的在线代理的教程
  • 探究Python的Tornado框架对子域名和泛域名的支持
  • 按日期打印Python的Tornado框架中的日志的方法
  • 在Python的Tornado框架中实现简单的在线代理的教程
  • 探究Python的Tornado框架对子域名和泛域名的支持
  • 按日期打印Python的Tornado框架中的日志的方法

相关文章

  • Ruby元编程基础学习笔记整理
  • python语言使用技巧分享
  • Python中函数参数设置及使用的学习笔记
  • 浅谈插入排序算法在Python程序中的实现及简单改进
  • python网络编程学习笔记(五):socket的一些补充
  • 详解在Python程序中自定义异常的方法
  • python操作日期和时间的方法
  • 实例讲解Python中SocketServer模块处理网络请求的用法
  • Python编程中对super函数的正确理解和用法解析
  • Python操作sqlite3快速、安全插入数据(防注入)的实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python统计日志ip访问数的方法
    • python常见排序算法基础教程
    • Python爬取三国演义的实现方法
    • python实现定时播放mp3
    • python下paramiko模块实现ssh连接登录Linux服务器
    • 详解python并发获取snmp信息及性能测试
    • 下载安装setuptool和pip linux安装pip
    • python将图片文件转换成base64编码的方法
    • Python字符串特性及常用字符串方法的简单笔记
    • Python基本数据类型详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有