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; } } }
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】