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

原文地址:https://www.cnblogs.com/qlqwjy/p/10623024.html

时间: 2025-01-02 11:19:30

springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式的相关文章

Spring Boot 嵌入式 Tomcat 文件上传、url 映射虚拟路径

1.Java web 应用开发完成后如果是导入外置的 Tomcat 的 webapps 目录的话,那么上传的文件可以直接的放在应用的 web 目录下去就好了,浏览器可以很方便的进行访问. 2.Spring Boot 默认使用嵌入式 Tomcat ,将来打包成可执行 Jar 文件进行部署,显然打成 jar 包后,总不可能再将上传的文件放在 resources 目录下去了. 3.Spring Boot 于是提供了 url 地址匹配本地虚拟路径的功能: 1)上传文件到服务器,服务器将文件保存到了本地,

SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898-- 报错原因: 解决方法 java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.5089835798184465073.8081/work/Tomcat/localhost/ROOT/www/server/apache-tomcat-8.5.32/webapps/jxmsto

springboot 项目打包部署后设置上传文件访问的绝对路径

1.设置绝对路径 application.properties的配置 #静态资源对外暴露的访问路径 file.staticAccessPath=/upload/** #文件上传目录(注意Linux和Windows上的目录结构不同) #file.uploadFolder=/home/upload/ file.uploadFolder=d://upload/ 配置上传文件的目录,也可以在这里设置上传文件的大小 @Configuration public class UploadFileConfig

SpringBoot上传文件到本服务器 目录与jar包同级

前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了. 当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了.当你使用File file = new File()的时候根本不知道这个路径怎么办.而且总不能很小的项目也给它构建一个文件服务器吧.所以这次就来解决这样的问题. 不想知道细节的,可以直接跳转到最后封装的部分,里面

SpringBoot上传文件到七牛云

准备工作 maven pom.xml添加七牛云的sdk依赖 <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.2.27</version> </dependency> 配置项 七牛云上传必要的配置有:accessKey.secretKey.bucket 其中accessKey.

spring-boot上传文件MultiPartFile获取不到文件问题解决

1.现象是在spring-boot里加入commons-fileupload jar并且配置了mutilPart的bean,在upload的POST请求后,发现 multipartRequest.getFiles("file")=null,有点奇怪,查了文档资料才解决. [java] view plain copy <bean id="multipartResolver" class="org.springframework.web.multipar

springBoot 上传文件到服务器,头像预览功能

sprijngBoot 2.x版本不需要添加依赖包,soringBoot以及集成好了 一: 上传文件 controller接受层 @PostMapping(value = "/fileUpload")public String fileUpload(@RequestParam(value = "file") MultipartFile file, ModelMap model, HttpServletRequest request) { if (file.isEmp

SpringBoot 上传文件夹

前端代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>upload</title> </head> <body> <form action="http://localhost:8080/api/upload" enctype="multip

Springboot 上传文件

@PostMapping("/upload")//springboot可以直接扫描resource下的static文件夹下的静态文件 public String upload(@RequestParam("head_img")MultipartFile file){ String name = request.getParameter("name"); log.info(name); String fileName = file.getOrigi