2021-10-23

layui实现圆形头像

在这里插入图片描述

<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
          name="viewport">
    <meta content="ie=edge" http-equiv="X-UA-Compatible">
    <link rel="stylesheet" th:href="@{/static/css/layui.css}">
    <script th:src="@{/static/js/layui.js}"></script>
    <link rel="stylesheet" th:href="@{/static/icon_1/iconfont.css}">
    <link rel="stylesheet" th:href="@{/static/css/modules/layer/default/layer.css}">
    <link rel="stylesheet" th:href="@{/static/css/modules/code.css}">
    <link rel="stylesheet" th:href="@{/static/css/modules/laydate/default/laydate.css}">
</head>
<body style="background-color: #faf8f8">

<form>
    <div class="layui-bg-gray" style="padding: 30px;">
        <div class="layui-row layui-col-space15">
            <div class="layui-col-md4">
                <div class="layui-panel">
                    <div style="padding: 50px 30px;">
                        <div class="layui-fluid">
                            <div class="layui-row layui-col-space15">
                                <div class="layui-col-md12">
                                    <div class="layui-card">
                                        <div class="layui-card-header"><p
                                                style="font-size: 25px;text-shadow: 5px 5px 5px black"><i>我的资料</i></p>
                                        </div>
                                        <div class="layui-card-body" pad15>
                                            <div class="layui-form" lay-filter="">
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">头像</label>
                                                    <div style="text-align: left">
                                                        <img class="layui-upload layui-anim"
                                                             data-anim="layui-anim-scaleSpring" id="id_upload_img"
                                                             style="border-radius: 50%; width: 150px;height: 150px; box-shadow: 0 0 0 4px rgb(0 0 0 /10%);"
                                                             th:if="${user.user_image} != ''"
                                                             th:src="${user.user_image}">
                                                        <img class="layui-upload layui-anim"
                                                             data-anim="layui-anim-scaleSpring" id="id_upload_img"
                                                             src="../../../static/image/img.png"
                                                             style="border-radius: 50%; width: 150px;height: 150px;box-shadow: 0 0 0 4px rgb(0 0 0 /10%);"
                                                             th:if="${user.user_image} == ''">
                                                        <div class="layui-word-aux"
                                                             style="margin-top: 10px;margin-left: 120px">点击更换我的头像
                                                        </div>
                                                        <div class="layui-word-aux" style="margin-left: 100px">上传图片限制大小
                                                            600kb
                                                        </div>
                                                    </div>
                                                </div>

                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">用户名</label>
                                                    <div class="layui-input-inline">
                                                        <p style="margin-top: 6px;font-size: 20px"
                                                           th:text="${user.user_name}">2021-10-12 19:22:12</p>
                                                        <!--                                                    <input type="text" name="username"  th:value="${user.user_name}" readonly class="layui-input">-->
                                                    </div>
                                                    <div class="layui-form-mid layui-word-aux">不可修改。</div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">昵称</label>
                                                    <div class="layui-input-inline">
                                                        <input autocomplete="off" class="layui-input"
                                                               lay-verify="nickname" name="nickname" placeholder="请输入昵称"
                                                               th:value="${user.name}" type="text">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">性别</label>
                                                    <div class="layui-input-block" th:if="${user.user_sex == ''}">
                                                        <input checked name="sex" title="" type="radio" value="">
                                                        <input name="sex" title="" type="radio" value="">
                                                        <input name="sex" title="保密" type="radio" value="保密">
                                                    </div>
                                                    <div class="layui-input-block" th:if="${user.user_sex == ''}">
                                                        <input name="sex" title="" type="radio" value="">
                                                        <input checked name="sex" title="" type="radio" value="">
                                                        <input name="sex" title="保密" type="radio" value="保密">
                                                    </div>
                                                    <div class="layui-input-block" th:if="${user.user_sex == '保密'}">
                                                        <input name="sex" title="" type="radio" value="">
                                                        <input name="sex" title="" type="radio" value="">
                                                        <input checked name="sex" title="保密" type="radio" value="保密">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">手机</label>
                                                    <div class="layui-input-inline">
                                                        <input autocomplete="off" class="layui-input" lay-verify="phone"
                                                               name="cellphone" th:value="${user.user_iphone}"
                                                               type="text">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">邮箱</label>
                                                    <div class="layui-input-inline">
                                                        <input autocomplete="off" class="layui-input" lay-verify="email"
                                                               name="email" th:value="${user.user_email}" type="text">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">注册时间</label>
                                                    <div class="layui-input-inline">
                                                        <p style="margin-top: 6px;font-size: 15px"
                                                           th:text="${user.date}">2021-10-12 19:22:12</p>
                                                    </div>
                                                    <div class="layui-form-mid layui-word-aux">不可修改。</div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <div class="layui-input-block">
                                                        <button class="layui-btn" lay-filter="setmyinfo" lay-submit>
                                                            确认修改
                                                        </button>
                                                        <button class="layui-btn layui-btn-primary" type="reset">重新填写
                                                        </button>
                                                    </div>
                                                </div>
                                            </div>

                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

</form>

<script>
    layui.use(['upload'], function () {
        var layer = layui.layer;
        var $ = layui.jquery,
            upload = layui.upload;

        let imagePath = '';
        //普通图片上传开始
        var uploadInst = upload.render({
            elem: '#id_upload_img',
            url: '/user/upload_img',
            size: 600, //限制文件大小,单位 KB
            before: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    // 保存预览显示图片
                    sessionStorage.setItem("img",result);
                });
            },
            //后台返回数据
            done: function (res) {
                if (res.bool=== true) {
                    // 当上传成功才回显图片
                    layer.msg(res.msg);
                    imagePath = res.data;
                    //回去预显示图片并回显
                    $('#id_upload_img').attr('src',sessionStorage.getItem("img"));
                } else {
                    layer.msg(res.msg);
                }
                console.log(res)
            },


        });
        //普通图片上传结束
    })

</script>


</body>
</html>

后台接收请求

@RequestMapping("/upload_img")
    @ResponseBody
    public String updateImager(@RequestParam("file") MultipartFile file, HttpServletRequest request){

        HashMap<String, Object> hashMap = new HashMap<>(3);
        System.out.println("file = " + file);

        String imagePath = UploadUtils.upload(file,request);
        System.out.println("image = " + imagePath);
        if (imagePath != null) {
            hashMap.put("bool",true);
            hashMap.put("msg","上传成功");
            hashMap.put("data",imagePath);
        }else {
            hashMap.put("bool",false);
            hashMap.put("msg","上传失败");
        }
        return JSON.toJSONString(hashMap);
    }

对图片进行处理加粗样式以及保存

package com.edu.util;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.UUID;

/**
 * @author yz
 * @data: 2021/10/23 11:39 星期六
 * @file : UploadUtils.java
 */
@Component
public class UploadUtils {

    /**
     * 上传保存的地址
     */

    public static  String BASE_PATH = null;
    //访问图片的地址

    private static final String SERVER_PATH = "/static/upload/image/";

    public static String upload(MultipartFile file, HttpServletRequest request){


        request.getSession().setAttribute("file",file);
        MultipartFile file1 = (MultipartFile) request.getSession().getAttribute("file");

        BASE_PATH = request.getSession().getServletContext().getRealPath("/");

        String[] output = BASE_PATH.split("target");
        String BASE_PATH_TO = BASE_PATH + "\\static\\upload\\image\\";
        BASE_PATH = output[0]+"src\\main\\webapp\\static\\upload\\image\\";
        //获取上传文件的名称
        String fileName = file.getOriginalFilename();
//       用于判断是否只由数字跟字母组成
        String pattern = "[\\w]+[.]+[\\w]+";
        if (!fileName.matches(pattern)) {
            return null;
        }
        String uuid = UUID.randomUUID().toString().replace("-", "");
        String newFileName = uuid +"-"+fileName;
        // 创建一个文件实例对象
        File image = new File(BASE_PATH,newFileName);
        File imageFile = new File(BASE_PATH_TO, newFileName);
        System.out.println("image = " + image);
        System.out.println("imageFile = " + imageFile);
        //对文件进行上传操作 file 只能使用一次用完后就关闭了
        try {
            file.transferTo(image);
        } catch (IOException e) {
            return null;
        }
        //对图片进行复制
        try {
            copyImage(image,imageFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //返回请求路径
        return SERVER_PATH + newFileName;
    }

    /**
     * 图片复制
     * @param image
     * @param imageFile
     * @throws IOException
     */
    public static void copyImage(File image,File imageFile) throws IOException {
        FileInputStream in=new FileInputStream(image);
        FileOutputStream out= new FileOutputStream(imageFile);
        BufferedInputStream bufferedIn=new BufferedInputStream(in);
        BufferedOutputStream bufferedOut=new BufferedOutputStream(out);
        byte[] by=new byte[1];
        while (bufferedIn.read(by)!=-1) {
            bufferedOut.write(by);
        }
        //将缓冲区中的数据全部写出
        bufferedOut.flush();
        bufferedIn.close();
        bufferedOut.close();
    }



}

依赖

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

spring-mvc.xml

<!--文件上传-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"/>
        <property name="maxUploadSize" value="#{1024*1024}"/>
    </bean>
```xml


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值