作者:不学无数的程序员
链接: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