同學(xué),你要的SpringBoot多圖片上傳回顯功能已經(jīng)實(shí)現(xiàn)了,趕緊收藏吃灰~
閱讀本文大概需要 3 分鐘。
來自:https://www.jianshu.com/p/3e28b94444be
SpringBoot 2.0 多圖片上傳加回顯
上傳
("/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("圖片不能同時(shí)為空");}responseEntity.setCode(ResponseEntity.OK);responseEntity.setMessage("上傳成功");return responseEntity;}
<div class="container"><div class="avatar-upload"><div class="avatar-edit"><input type='file' name="pictures" id="imageOne" accept=".png, .jpg, .jpeg"/><label for="imageOne"></label></div><div class="avatar-preview"><div id="imageOnePreview"style="background-image: url(http://ww3.sinaimg.cn/large/006tNc79ly1g556ca7ovqj30ak09mta2.jpg);"></div></div></div></div>
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);});
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("失敗");})});}
效果展示


配置上傳圖片的屬性
spring:servlet:multipart:enabled: true: 20MB: 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 # 請(qǐng)求的最大值spring.servlet.multipart.resolve-lazily=false # 是否在文件或參數(shù)訪問時(shí)延遲解析多部分請(qǐng)求
異常處理
@ControllerAdvice@Slf4jpublic class CommonExceptionHandler extends ResponseEntityExceptionHandler {(NullOrEmptyException.class)public ResponseEntity<String> nullOrEmptyExceptionHandler(HttpServletRequest request, NullOrEmptyException exception){log.info("nullOrEmptyExceptionHandler");return handleErrorInfo(request, exception.getMessage());}(value = Exception.class)public ResponseEntity<String> defaultErrorHandler(HttpServletRequest request, Exception exception){log.info("defaultErrorHandler");return handleErrorInfo(request, exception.getMessage());}private ResponseEntity<String> handleErrorInfo(HttpServletRequest request, String message) {ResponseEntity<String> responseEntity = new ResponseEntity<>();responseEntity.setMessage(message);responseEntity.setCode(ResponseEntity.ERROR);responseEntity.setData(message);responseEntity.setUrl(request.getRequestURL().toString());return responseEntity;}}
遇到的坑
如果返回值是模板文件的文件名,那么無論是類上還是方法上都不能加@ResponseBody注解,因?yàn)槿绻恿说脑挄?huì)被解析成Json串返回。
注意前端所傳參數(shù)名和后端接收參數(shù)名一一對(duì)應(yīng)。不然會(huì)報(bào)405錯(cuò)誤
使用IDEA開發(fā)如果使用了lombok那么需要在Annotation Processors中將Enable annotation processing打?qū)?/span>

推薦閱讀:
一個(gè)基于 Spring 極度簡(jiǎn)單的 Restful API 工具,非常好用!
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
朕已閱 
評(píng)論
圖片
表情

