• springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式 & Springboot配置日期转换器


    1.    Springboot上传文件

      springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样

        @RequestMapping("/uploadPicture")
        @ResponseBody
        public JSONResultUtil uploadPicture(MultipartFile file, Integer viewId) {
            if (file == null) {
                return JSONResultUtil.error("文件没接到");
            }
            logger.debug("file -> {},viewId ->{}", file.getOriginalFilename(), viewId);
    
            String fileOriName = file.getOriginalFilename();// 获取原名称
            String fileNowName = UUIDUtil.getUUID2() + "." + FilenameUtils.getExtension(fileOriName);// 生成唯一的名字
            try {
                FileHandleUtil.uploadSpringMVCFile(file, fileNowName);
    
                Picture picture = new Picture();
                picture.setCreatetime(new Date());
                picture.setName(fileOriName);
                picture.setPath(fileNowName);
                picture.setViewId(viewId);
                pictureService.addPicture(picture);
            } catch (Exception e) {
                logger.error("uploadPicture error", e);
                return JSONResultUtil.error("添加景点图片出错");
            }
    
            return JSONResultUtil.ok();
        }

    保存文件到本地的方法如下:

        public static boolean uploadSpringMVCFile(MultipartFile multipartFile, String fileName) throws Exception {
            String fileDir = StringUtils.defaultIfBlank(FileHandleUtil.getValue("path", "picture"), "E:/picture/");
    
            if (!new File(fileDir).exists()) {
                new File(fileDir).mkdirs();
            }
            multipartFile.transferTo(new File(fileDir + fileName));// 保存文件
    
            return true;
        }

      这个默认的有文件上传大小的限制,默认是1MB,可以用下面配置进行修改:

    ########设置文件上传大小的限制
    #multipart.maxFileSize=10Mb是设置单个文件的大小, multipart.maxRequestSize=100Mb是设置单次请求的文件的总大小
    #如果是想要不限制文件上传的大小,那么就把两个值都设置为-1就行
    spring.http.multipart.maxFileSize = 10Mb
    spring.http.multipart.maxRequestSize=100Mb

    2.    不配置虚拟路径访问服务器的图片等文件

       参考:https://www.cnblogs.com/qlqwjy/p/9510878.html

     后台代码:

        @RequestMapping("/getPicture")
        public void getPicture(HttpServletRequest request, HttpServletResponse response, String path) {
            FileInputStream in = null;
            ServletOutputStream outputStream = null;
            try {
                File fileByName = FileHandleUtil.getFileByName(path);
                in = new FileInputStream(fileByName);
                outputStream = response.getOutputStream();
                IOUtils.copyLarge(in, outputStream);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                IOUtils.closeQuietly(in);
                IOUtils.closeQuietly(outputStream);
            }
        }

    创建File对象的代码:

        public static File getFileByName(String path) {
            String fileDir = StringUtils.defaultIfBlank(FileHandleUtil.getValue("path", "picture"), "E:/picture/");
            return new File(fileDir + path);
        }

    前端可以访问此路径并且传一个path,如下:(thymeleaf语法)

    <img alt="" th:src="${'/picture/getPicture.html?path='+picture.path}" height="300px" width="300px"/>

    3.    配置日期的格式化格式

      有时候希望日期类型的字段转JSON的时候采用特定的格式,如下:

    ############################################################
    #
    # 格式化日期类型为JSON的格式
    #
    ############################################################
    spring.jackson.date-format=yyyy-MM-dd
    spring.jackson.time-zone=GMT+8
    spring.jackson.serialization.write-dates-as-timestamps=false

    4.  Springboot配置日期转换器

      有时候需要将前台的日期格式的字符串自动转换为Date类型,不加转换器会报错,所以需要增加转换器,方法如下:

    package cn.qs.config;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.Ordered;
    import org.springframework.core.convert.converter.Converter;
    import org.springframework.format.FormatterRegistry;
    import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
    import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    /**
     * 1.日期转换
     * 
     * @author Administrator
     *
     */
    @Configuration
    public class MVCConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void addFormatters(FormatterRegistry registry) {
            registry.addConverter(new DateConverter());
        }
    
        /**
         * 日期转换类
         * 
         * @author Administrator
         *
         */
        private class DateConverter implements Converter<String, Date> {
            private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    
            @Override
            public Date convert(String s) {
                if ("".equals(s) || s == null) {
                    return null;
                }
                try {
                    return simpleDateFormat.parse(s);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return null;
            }
        }
    }
  • 相关阅读:
    (05)ElasticSearch 倒排索引
    (04)ElasticSearch 安装Kibana
    (03)ElasticSearch 安装ElasticSearch-Head插件
    (02)ElasticSearch 安装
    (004)Linux http命令curl访问url
    (01)ElasticSearch概述
    (16)mongodb mapReduce分布式统计示例遇到的一个未解问题,求平均值不对,希望哪位大神给指点一下
    (15)mongodb mapReduce的概念及用法
    (14)mongodb aggregate聚集框架
    CodeForces
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/10623024.html
Copyright © 2020-2023  润新知