tornado 相关说明

改善图片上传功能 ,生成唯一的 ID ,与路径拼接,生成 URL,

这里引用 uuid 的 python 库

在 photo.py 中创建个类,用来  辅助用户上传的图片,生成相关缩略图,记录图片相关 URL ,并保存到数据库

把用户上传图片,生成缩略图,URL,保存信息到数据库放进一个类里,
class UploadImg:
"""
辅助用户上传的图片,生成相关缩略图,记录图片相关 URL ,并保存到数据库
"""
upload_dir = 'uploads'
thumb_dir = 'thumb'
size = (200,200) def __init__(self, old_name, static_path):
self.old_name = old_name
self.static_path = static_path
self.name = self.get_new_name() def get_new_name(self):
'''
生成一个唯一的字符串,用来做图片保存的字句
:return:
'''
# 拿到图片名的后缀
_, ext = os.path.splitext(self.old_name)
# 返回 16 位字符串, 生成新名字
return uuid.uuid4().hex + ext @property
def upload_url(self):
'''
用来保存图片相对路径的 url
:return:
'''
return os.path.join(self.upload_dir, self.name) @property
def upload_path(self):
'''
保存图片的文件路径
:return:
'''
return os.path.join(self.static_path, self.upload_url) def save_upload(self, content):
"""图片上传,保存"""
save_to = self.upload_path
with open(self.upload_path, 'wb') as fh:
# 把文件内容写到指定文件路径中
fh.write(content) @property
def thumb_url(self):
'''
生成用来保存缩略图相关路径的 url
:return: '''
_, ext = os.path.splitext(self.old_name)
thumb_name = '{}_{}X{}{}'.format(self.name, self.size[0], self.size[1], ext)
return os.path.join(self.upload_dir,
self.thumb_dir,
thumb_name) def save_thumb(self):
"""生成缩略图"""
# PIL 要操作的文件路径,
im = Image.open(self.upload_path)
# 缩略图生成
im.thumbnail(self.size)
# 保存缩略图
# 分离文件名和扩展名 im.save(os.path.join(self.static_path, self.thumb_url))

潭州课堂25班:Ph201805201 tornado 项目 第六课 用户和图片分享的集成(课堂笔记)的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第十七课 用户登录,登出实现 (课堂笔记)

    登录,校验: 1,判断用户名输入是否为空, 2,判断用户名密码是否匹配, 3,记住我的功能,:将用户信息记到 session 中 请求方式: POST 在视图中: # 1,创建类# 2,获取前台参数# ...

  2. 潭州课堂25班:Ph201805201 tornado 项目 第八课 增加喜欢功能(课堂笔记)

    tornado 相关说明 新增一个页面,用来做图片收藏, 还要在 account.py 创建一个数据库表,记录用户喜欢的图片,哪些图片用户疯狂传奇 cd 到 项目目录下,执行数据库更新 alembic ...

  3. 潭州课堂25班:Ph201805201 tornado 项目 第七课 界面美化和静态文件处理(课堂笔记)

    tornado 相关说明 使用  Bootstrap 前端框架 可以在 bootCDN 这里找 jquery ,poppe.js 文件 美化项目 twittel 的开源项目, 在 static 目录下 ...

  4. 潭州课堂25班:Ph201805201 tornado 项目 第五课 增加用户系统-用户中心(课堂笔记)

    tornado 相关说明 在 users 表中创建记录,做测试 在项目根目录下创建 test.py # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/27 ...

  5. 潭州课堂25班:Ph201805201 tornado 项目 第四课 增加用户注册登录(课堂笔记)

    tornado 相关说明 在 handlers 中创建个 auth.py 用来做用户登录,在这文件中创建个类,并逐步完善 在 tornado 中创建 login.html 文件,是个登录页面 {% e ...

  6. 潭州课堂25班:Ph201805201 tornado 项目 第十一课 项目改进和优化(课堂笔记)

    使用  Bootstrap 前端框架 可以在 bootCDN 这里找 jquery ,poppe.js 文件 当聊天室发来一第图片链接时,自动保存图片到服务器,并保存相关信息到数据库,系统向该用户发出 ...

  7. 潭州课堂25班:Ph201805201 tornado 项目 第十课 深入应用异步和协程(课堂笔记)

    tornado 相关说明 需求: 增加 /save 的 handler,实现异步保存指定 URL 图片的功能 从网页上得到一张图片地址,由这个地址将图片保存到服务器,并将相关数据保存到数据库 impo ...

  8. 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)

    tornado 相关说明 f增加图片上传功能, 在 main.py ,文件中创建个  UploadHandler 类,用来处理图片上传 上传图片之前,要先渲染这个页面,所以定个 get 方法,把这个页 ...

  9. 潭州课堂25班:Ph201805201 django 项目 第二十一课 文章主页 新闻列表页面功能 (课堂笔记)

    新闻列表页功能 1.分析 业务处理流程: 判断前端传的标签分类id是否为空,是否为整数.是否超过范围 判断前端传的当前文章页数是否为空,是否为整数.是否超过范围 请求方法:GET url定义:/new ...

随机推荐

  1. os.listdir()、os.walk()和os.mkdir()的用法

    内容主要参照博客https://blog.csdn.net/xxn_723911/article/details/78795033 http://www.runoob.com/python/os-wa ...

  2. jmeter+maven+jenkins自动化接口测试(上)

    代码已上传git(包括调试的jmx,jmeter相关文件等):https://gitlab.com/yinzhenzhi/jmeterandmaven 目的:现在很多人都在做自动化接口的平台,我也正在 ...

  3. FreeNAS:创建 CIFS 匿名共享

    第一部分:数据集权限设定 浏览器访问 FreeNAS 系统的 WebGUI 管理界面,点选 “Storage” 存储图标打开存储选项卡,在卷列表中点选用于匿名共享的数据集,如有需要,也可以自行创建新的 ...

  4. Luogu P2057 [SHOI2007]善意的投票

    题目链接 \(Click\) \(Here\) 考虑模型转换.变成文理分科二选一带收益模型,就一波带走了. 如果没有见过这个模型的话,这里讲的很详细. #include <bits/stdc++ ...

  5. pyqt5-按钮基类-QAbstractButton

    QAbstractButton  是抽象类 from PyQt5.QtWidgets import QApplication, QWidget,QAbstractButton import sys f ...

  6. 逻辑运算符、位运算符、三元运算符、判断语句(if,switch)

    逻辑运算符 逻辑与 &:由false则false 逻辑或 |:有true则true 逻辑异或 ^:相同为false,不同为true 逻辑非 !:非false则true,非true则false ...

  7. MapReduce Partition解析

    Map的结果,会通过partition分发到Reducer上,reducer操作过后会进行输出.输出的文件格式后缀000001就代表1分区. Mapper处理过后的键值对,是需要送到Reducer那边 ...

  8. django项目实现中文检索

    在settings.py中设置 EMAIL_USE_SSL = True EMAIL_HOST = 'smtp.qq.com'  # 如果是 163 改成 smtp.163.com EMAIL_POR ...

  9. Innodb和Myisam数据恢复

    (转自)https://www.cnblogs.com/DwyaneTalk/p/4113829.html 背景 这次恢复oracle和sqlserver,想想也不能把mysql落下了吧.三剑合一.都 ...

  10. 转-filebeat 源码分析

    背景 在基于elk的日志系统中,filebeat几乎是其中必不可少的一个组件,例外是使用性能较差的logstash file input插件或自己造个功能类似的轮子:). 在使用和了解filebeat ...