web项目027-----装饰器的测试&文件存储方案选择

博客主要围绕Python和Flask展开,先进行装饰器的测试,实现上传图片功能,利用自定义装饰器验证登录。之后探讨文件存储方案,分析了保存到本地、多机存储的问题,给出解决方案,如搭建FastDFS、HDFS系统,还推荐使用七牛云第三方服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰器的测试

我们选择文件点击上传

可以看到

现在我们去写个这路由,晚上上传图片的功能

我们创建一个profile用来写个人中心的一些功能

from . import api


@api.route('/users/avatar', methods = ["POST"])
def set_user_avatar():
    """设置用户头像"""

我们要设置用户头像,那么就必须登陆

所以就用到我们上一章定义的装饰器了

# view_func---被装饰的函数
def login_required(view_func):
    @functools.wraps(view_func)
    def wrapper(*args, **kwargs):
        # 判断用户的登陆状态,我们用user_id进行判断
        user_id = session.get('user_id')

        if user_id is not None:
            # 已登陆
            g.user_id = user_id
            return view_func(*args, **kwargs)
        else:
            # 未登录
            return jsonify(errno=RET.SESSIONERR, errmsg='用户未登陆')

    return wrapper

我们在profile.py文件中倒入我们自定义的装饰器

注意:这两个装饰器是有顺序的,必须先找到路由,然后再验证有没有登陆

然后别忘了把我们写的视图函数放到__init__.py文件中导入一下

我们在没有登陆的情况下访问my.html

然后点击修改,进入到上传图片的页面

我们选择完图片点击上传

他会直接跳转到登陆界面

成功!!

接下来我们思考头像上传到什么地方呢

文件存储方案选择

存储方案

  • 保存到程序本地,磁盘满了要扩容
  • 备份的问题
  • 多机存储
  • 多用户保存同一张图片,名字不一样,造成空间浪费
  • 多用户上传同名文件,会出现覆盖之前的内容 

文件存储解决方案

  • 自己搭建文件存储系统
    • FastDFS 快速分布式文件存储系统(电商)
    • HDFS hadoop分布式文件系统
  • 选择第三方服务
    • 七牛云

我们这里使用七牛云:https://portal.qiniu.com/

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值