人事管理系统4

用户信息修改

修改头像(文件上传)

上传工具类UploadFileUtils.java
public class UploadFileUtils {
    /**
     * 获取文件后缀
     */
    public static String getSuffixName(MultipartFile file) {
        String fileName = file.getOriginalFilename();  //getOriginalFilename()获取文件的完整名称,包括文件名称+文件拓展名
        if (!StringUtils.hasText(fileName)) {
            throw new RuntimeException("获取文件后缀失败");
        }
        return fileName.substring(fileName.lastIndexOf("."));
    }
    /**
     * 生成文件名称通用方法
     */
    public static String getNewFileName(String suffixName) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
        int random = new Random().nextInt(100);
        StringBuilder tempName = new StringBuilder();
        tempName.append(sdf.format(new Date())).append(random).append(suffixName);
        //当前日期时间+两位随机数+文件后缀
        return tempName.toString();
    }
    /**
     *  获取服务器主机名
     */
    public static URI getHost(URI uri) {
        URI effectiveURI;
        try {
            effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null);
        } catch (Throwable var4) {
            effectiveURI = null;
        }
        return effectiveURI;
    }
}
AuserController.java
 @PostMapping({"/upload/userImg"})
    @ResponseBody
    public boolean upload(HttpServletRequest request, @RequestParam("file")
    MultipartFile file, HttpSession session) throws IOException, URISyntaxException
    {
        /*1、给文件起一个新的文件名--------------------*/
        String suffixName = UploadFileUtils.getSuffixName(file);
        String newFileName = UploadFileUtils.getNewFileName(suffixName);
        /*-----------------------------------------*/
        /*2.在本机(或服务器)创建一个文件夹-----------*/
        String realPath = System.getProperty("user.dir") + "\\upload\\";
//System.getProperty("user.dir")获取该项目在本机上的绝对路径,比如“C:\java\demo”
//realPath:图片在服务器上的物理存储地址,比如“C:\java\demo\\upload”
        File fileDirectory = new File(realPath); //在内存中创建文件夹映射对象,比如“C:\java\demo\\upload”
        File destFile = new File(realPath + newFileName); //在内存中创建文件映射对象,比如“C:\java\demo\\upload\xxxx.jpg”
        if (!fileDirectory.exists() && !fileDirectory.mkdirs()) {
            System.out.println("文件夹创建失败!");
            return false;
        }
        /*-----------------------------------------*/
        /*3.把file以新文件名形式存入本机(或服务器)文件夹-----*/
        file.transferTo(destFile);
        /*----------------------------------------------*/
        /*4.创建能访问该文件的URL地址(不是电脑的物理地址、不是绝对路径)放入数据库表-----*/
//new URI()生成一个统一资源定位地址,例如URL,如果语法不正确则抛出异常
        URI uri = new URI(request.getRequestURL() + "");
//http://localhost:8081/admin/upload/userImg/
        uri = UploadFileUtils.getHost(uri); //http://localhost:8081
        String sqlImg = uri + "/upload/" + newFileName; //sqlImg:存入数据库表中的图片地址,比如“http://localhost:8081/upload/xxxx.jpg”
    if (auserService.updateAuser(session.getAttribute("name").toString(),
            session.getAttribute("pwd").toString(), sqlImg)) {
        session.setAttribute("userimg", sqlImg);
        return true;
    } else {
        return false;
    }
        /*--------------------------------------------------------------------*/
    }
MyWebMvcConfigurer.java增加静态资源拦截器配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/upload/**").addResourceLocations("classpath:/uplo
ad/","file:upload/");
//当访问路径是addResourceHandler中的路径时,映射到访问addResourceLocations中的本地
路径
//classpath:/ 项目打包为jar文件后,jar包根目录
//file: Maven项目的目录下(与pom.xml同目录);项目打包后jar包根目录
}
验证图片上传和显示效果,项目打jar包,target下生成 example-1.0.jar(先屏蔽掉 pom.xml中的,skip元素为true时,Maven会跳过项目的构建过程,项目不会被编译打包):
命令行运行:java -jar example-1.0.jar,脱离IDEA运行项目。
application.properties配置上传文件大小:
命令行运行:java -jar example-1.0.jar,脱离IDEA运行项目。
application.properties配置上传文件大小:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值