2021-07-27

Spring Boot 实现多图片上传并回显,涨姿势了~

作者:不学无数的程序员

链接:https://www.jianshu.com/p/3e28b94444be

这两天公司有需求让做一个商户注册的后台功能,其中需要商户上传多张图片并回显。由于之前没做过这方面的东西,此篇文章用以记录一些知识点,以便后续查看。

上传

Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。此处应该注意参数名应该和<input>中的name值相对应:

@RequestMapping("/pic")@ResponseBodypublic ResponseEntity<String> pic(MultipartFile [] pictures) throws Exception { ResponseEntity<String> responseEntity = new ResponseEntity<>(); long count = Arrays.asList(pictures).stream().   map(MultipartFile::getOriginalFilename).   filter(String::isEmpty).count(); if (count == pictures.length){  responseEntity.setCode(ResponseEntity.ERROR);  throw new NullOrEmptyException("图片不能同时为空"); } responseEntity.setCode(ResponseEntity.OK); responseEntity.setMessage("上传成功"); return responseEntity;}

前端页面的代码,此处的name值和Controller的参数名称是对应的:

<div > <div >  <div >   <input type='file' name="pictures" id="imageOne" accept=".png, .jpg, .jpeg"/>   <label for="imageOne"></label>  </div>  <div >   <div id="imageOnePreview"     >   </div>  </div> </div></div>

js代码回显

function readURLOne(input) { if (input.files && input.files[0]) {  var reader = new FileReader();  reader.onload = function(e) {   $('#imageOnePreview').css('background-image', 'url('+e.target.result +')');   $('#imageOnePreview').hide();   $('#imageOnePreview').fadeIn(650);  }  reader.readAsDataURL(input.files[0]); }}$("#imageOne").change(function() { readURLOne(this);});

js代码上传

function getUpload(){ //获取form表单中所有属性 key为name值 var formData = new FormData($("#picForm")[0]); $.ajax({  url: '/pic',  type: 'POST',  dataType:"json",  data: formData,  processData: false,  contentType: false,  success:(function(data) {   window.confirm(data.message);   window.location.reload();  }),  error:(function(res) {   alert("失败");  }) });}

效果展示

初始页面如下

上传完图片以后回显为

点击提交以后可将图片上传至后台

配置上传图片的属性

默认情况下只允许上传1MB以下的图片,如果要设置上传图片大小。那么需要在配置文件中如下配置

spring: servlet: multipart:  enabled: true  max-file-size: 20MB  max-request-size: 20MB

关于文件的配置有下面几个

spring.servlet.multipart.enabled=true # 是否支持多文件上传spring.servlet.multipart.file-size-threshold=0B # 文件写入磁盘的阈值spring.servlet.multipart.location= # 上传文件的保存地址spring.servlet.multipart.max-file-size=1MB # 上传文件的最大值spring.servlet.multipart.max-request-size=10MB # 请求的最大值spring.servlet.multipart.resolve-lazily=false # 是否在文件或参数访问时延迟解析多部分请求

Spring Boot 基础教程和示例源码:https://github.com/javastacks/spring-boot-best-practice

异常处理

异常处理用了Springboot提供的全局异常处理机制。只需要在类上加入@ControllerAdvice注解即可。在方法上加入@ExceptionHandler(想要拦截的异常类)就能拦截所有Controller的异常了。

如果想要拦截指定为特定的Controller只需要在@ControllerAdvice(basePackageClasses=想要拦截的Controller)

@ControllerAdvice@Slf4jpublic class CommonExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler(NullOrEmptyException.class) @ResponseBody public ResponseEntity<String> nullOrEmptyExceptionHandler(HttpServletRequest request, NullOrEmptyException exception){  log.info("nullOrEmptyExceptionHandler");  return handleErrorInfo(request, exception.getMessage()); } @ExceptionHandler(value = Exception.class) @ResponseBody public ResponseEntity<Stri......

原文转载:http://www.shaoqun.com/a/898458.html

跨境电商:https://www.ikjzd.com/

杨颜:https://www.ikjzd.com/w/1820

立刻网:https://www.ikjzd.com/w/2323

飞书互动:https://www.ikjzd.com/w/1319


作者:不学无数的程序员链接:https://www.jianshu.com/p/3e28b94444be这两天公司有需求让做一个商户注册的后台功能,其中需要商户上传多张图片并回显。由于之前没做过这方面的东西,此篇文章用以记录一些知识点,以便后续查看。上传Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。
邮乐:https://www.ikjzd.com/w/1776
c88:https://www.ikjzd.com/w/1017.html
星夜集结,全民接力!这样的佛山南海,看哭了! :http://www.30bags.com/a/436782.html
星月城市志:王之城,伊斯坦布尔:http://www.30bags.com/a/262325.html
行货iphone5s什么时候上市?多少钱?:http://www.30bags.com/a/403839.html
行李超重怎么办?飞机行李超重怎么办 行李超重收费多少?:http://www.30bags.com/a/429608.html
口述和同桌在教室做了好爽 被同桌绑着玩我的下面文章:http://lady.shaoqun.com/a/247578.html
口述实录:与男邻居过上夫妻生活后我对老公没感觉了:http://www.30bags.com/m/a/249617.html
大学周边的酒店往往供不应求。他们在里面做什么?你有过难忘的经历吗?:http://lady.shaoqun.com/a/436475.html
亚马逊否认将在年内接受比特币支付,比特币闪崩跌破37000美元:https://www.ikjzd.com/articles/146919
2021深圳锦绣中华泼水节有新项目吗:http://www.30bags.com/a/526613.html
深圳深湾街心公园适合避暑吗:http://www.30bags.com/a/526614.html

No comments:

Post a Comment