DAY17 个人中心头像设置

技术DAY17 个人中心头像设置 DAY17 个人中心头像设置先来说存储文件的两种情形,同文件不同名的存储以及同名不同文件的存储
解决的方法就是指纹,用指纹来识别文件,并通过指纹进行文件的获取
写入

第17天个人中心头像设置。

我们来说一下存储文件的两种情况,即存储不同名称的文件和存储不同名称的文件。

解决方案是指纹,用于识别文件,通过指纹获取文件。

写指纹和获取指纹可以通过自己搭建服务器或者使用第三方平台来完成。在这里,

我们用的是第三方奇牛云,pip奇牛可以自己下载使用,比较方便。

获取齐牛云给出的需要拼接的文件地址、需要书写的指纹、域名。

之后,我们将完成头像的设置,并上传文件并获得它。

用户头像的设置

后台代码

首先,这是新的一页。首先,我们构建相应的视图并渲染页面,并注意页面是否需要。

在渲染数据时,是否需要构建对应的上下文,在设置URL时,需要与js中的ajax URL一致,请求方式一致。

获取呈现页面的请求,并发布接收和修改用户文件数据的请求。

或者先分析思路写评论。

第一步:

# 1.验证用户登录状态。

用户=g.user

如果不是用户:

返回重定向(url_for('index.index ')

当用户未登录时,跳转到主页。

第二步

get请求:

# 2.根据不同的要求执行不同的操作。

# 2.1 GET请求。

if request.method=='GET':

# 2.1.1施工背景。

上下文={ 0

用户' : user.to_dict(),如果用户无其他

}

# 2.1.2页面渲染。

返回render _ template(' news/user _ pic _ info . html ',**context)

我们需要将用户的头像发送到前端进行渲染,在用户的to_dict()函数中拼接文件地址,也就是可以从齐牛云那里得到文件。

七牛云域名我们在配置表中有,方便修改。

字典做出的评估意味着只有指纹存储在我们的数据库中。

post请求:

# 2.2POST请求。

if request.method=='POST':

# 2.2.1接收参数(文件、头像)。

avatar=request . files . get(' avatar ')

# 2.2.2检查参数。

尝试:

image=avatar.read()

e :除外

current_app.logger.error(e)

返回jsonify (errno=ret。paramerr,errmsg='参数错误')。

# 2.2.3上传图片到七牛云获取指纹。

尝试:

key=upload_file(图像)

e :除外

current_app.logger.error(e)

返回jsonify (errno=ret。thirderrr,errmsg='图片保存失败')。

#2.2.4更新用户头像信息。

user.avatar_url=key

尝试:

db.session.commit()

e :除外

current_app.logger.error(e)

db.session.rollback()

返回jsonify (errno=ret.dberr,errmsg=' save failed ')。

数据={ 0

avatar_url':常量。QINIU_DOMIN_PREFIX键

}

# 2.2.4返回json数据。

br> return jsonify(errno=RET.OK,errmsg="成功",data = data)

  

我们需要接收我们文件,request.files.get来接收文件数据,这里校验使用了read,当用户上传了文件,我们

最终接收到的是文件类型,它是可以读,如果不能就说明没有上传或者不是文件类型的文件,所以对参数进行了

是否有值和类型的校验,它是可以接收文本文件的,但是前端不能渲染。read后的数据为文件的二进制格式,

我们进行保存并将它上传到 七牛云

这个文件保存在utils ,也就是我们的工具文件夹。

upload_file 就是将文件上传到七牛云,并将指纹返回,这是第三方的操作记得进行异常捕捉并作出处理

完成后用变量保存并将它存到用户的资料中,也就是对我们查到的用户信息进行修改。

当修改完成之后前端的回调函数需要我们将完整的地址拼接好传给它进行刷新替换,所以我们最后的返回数据需要将完整的地址返回

前端代码:

HTML

!DOCTYPE html
html lang="en"
head
	meta charset="UTF-8"
	title用户中心/title
	link rel="stylesheet" type="text/css" href="../../static/news/css/reset.css"
	link rel="stylesheet" type="text/css" href="../../static/news/css/main.css"
    script type="text/javascript" src="../../static/news/js/jquery-1.12.4.min.js"/script?
    script type="text/javascript" src="../../static/news/js/jquery.form.min.js"/script
    script type="text/javascript" src="../../static/news/js/user_pic_info.js"/script
/head
body class="inframe_body"
    form class="pic_info"
        h3头像设置/h3
        div class="form-group"
            label class="label01"当前图像:/label
            img src="{% if user.avatar_url %}{{ user.avatar_url }}{% else %}../../static/news/images/user_pic.png{% endif %}" class="now_user_pic"
        /div
        div class="form-group"
            label上传图像:/label
            input type="file" name="avatar" class="input_file"
        /div
        
        div class="form-group"
            input type="submit" value="保 存" class="input_sub"
        /div
    /form
/body
/html

  

对img标签的src进行了判断,并给出不同展示,当有值时展示字典中拼接好的图片地址,也就是图片。没有值时就展示静态资源中默认的图片,

这样我们前端HTML中所有渲染用户头像的img标签的值都需要进行这样的修改,并且将传的user数据进行字典化,并且判断没有时的传入内容

不然未登录用户获取到的user为NONE,NONE是不能字典化,当user为NON时,我们就不进行字典化,且传NONE给前端,新闻首页和详情页都要修改以及用户中心

js文件

function getCookie(name) {
    var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
    return r  r[1] : undefined;
}
$(function () {
    $(".pic_info").submit(function (e) {
        e.preventDefault();
        //TODO 上传头像
        $(this).ajaxSubmit({
            url: "/user/pic_info",
            type: "POST",
            headers: {
                "X-CSRFToken": getCookie('csrf_token')
            },
            success: function (resp) {
                if (resp.errno == "0") {
                    $(".now_user_pic").attr("src", resp.data.avatar_url);
                    $(".user_center_picimg", parent.document).attr("src", resp.data.avatar_url);
                    $(".user_loginimg", parent.document).attr("src", resp.data.avatar_url)
                }else {
                    alert(resp.errmsg)
                }
            }
        });
    });
});

  

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52945.html

(0)

相关推荐

  • C#中Word如何转PDF/HTML/XML/XPS/SVG/EMF/EPUB/TIFF格式

    技术C#中Word如何转PDF/HTML/XML/XPS/SVG/EMF/EPUB/TIFF格式这篇文章主要介绍了C#中Word如何转PDF/HTML/XML/XPS/SVG/EMF/EPUB/TIFF格式,具有一定借鉴

    攻略 2021年11月24日
  • 如何让Python爬取招聘网站数据并实现可视化交互大屏

    技术如何让Python爬取招聘网站数据并实现可视化交互大屏如何让Python爬取招聘网站数据并实现可视化交互大屏,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的

    攻略 2021年10月26日
  • 怎么理解python的第三方库pandas

    技术怎么理解python的第三方库pandas本篇内容介绍了“怎么理解python的第三方库pandas”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希

    攻略 2021年11月10日
  • JAVA8的stream怎么使用

    技术JAVA8的stream怎么使用这篇文章主要讲解了“JAVA8的stream怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA8的stream怎么使用”吧

    攻略 2021年11月30日
  • 怎么交养老保险,养老保险怎么交,去哪里交

    技术怎么交养老保险,养老保险怎么交,去哪里交您可以申请缴纳灵活就业养老保险,像您月入8000元需要还贷款多少钱那?年轻人能有缴纳社保是好的开始,接下来我们就详细说明灵活就业人员养老保险如何申请缴纳怎么交养老保险;首先我们

    生活 2021年10月31日
  • 学习excel表格制作,Excel怎么快速学会

    技术学习excel表格制作,Excel怎么快速学会学会这10个Excel神技能,零基础也能玩得转学习excel表格制作!Excel大家都很熟悉,界面直观、计算功能和图表处理都很出色,是职场上使用最广泛的数据处理软件。虽然

    生活 2021年10月25日