欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot2.0實(shí)現(xiàn)多圖片上傳加回顯

 更新時(shí)間:2021年07月28日 11:20:51   作者:不學(xué)無(wú)數(shù)的程序員  
這兩天公司有需求讓做一個(gè)商戶注冊(cè)的后臺(tái)功能,其中需要商戶上傳多張圖片并回顯,本文就使用SpringBoot2.0實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

這兩天公司有需求讓做一個(gè)商戶注冊(cè)的后臺(tái)功能,其中需要商戶上傳多張圖片并回顯。由于之前沒做過這方面的東西,此篇文章用以記錄一些知識(shí)點(diǎn),以便后續(xù)查看。

上傳

Controller的代碼非常簡(jiǎn)單,由于用了SpringMVC框架,所以直接用MultipartFile來接即可。由于是多圖片上傳所以用數(shù)組來接。此處應(yīng)該注意參數(shù)名應(yīng)該和<input>中的name值相對(duì)應(yīng)

@RequestMapping("/pic")
@ResponseBody
public 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;
}

前端頁(yè)面的代碼,此處的name值和Controller的參數(shù)名稱是對(duì)應(yīng)的

<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>

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("失敗");
        })
    });
}

效果展示

初始頁(yè)面如下

上傳完圖片以后回顯為

點(diǎn)擊提交以后可將圖片上傳至后臺(tái)

配置上傳圖片的屬性

默認(rèn)情況下只允許上傳1MB以下的圖片,如果要設(shè)置上傳圖片大小。那么需要在配置文件中如下配置

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

關(guān)于文件的配置有下面幾個(gè)

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)求

異常處理

異常處理用了Springboot提供的全局異常處理機(jī)制。只需要在類上加入@ControllerAdvice注解即可。在方法上加入@ExceptionHandler(想要攔截的異常類)就能攔截所有Controller的異常了。如果想要攔截指定為特定的Controller只需要在@ControllerAdvice(basePackageClasses=想要攔截的Controller)

@ControllerAdvice
@Slf4j
public 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<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;
    }
}

遇到的坑

  • 如果返回值是模板文件的文件名,那么無(wú)論是類上還是方法上都不能加@ResponseBody注解,因?yàn)槿绻恿说脑挄?huì)被解析成Json串返回。
  • 注意前端所傳參數(shù)名和后端接收參數(shù)名一一對(duì)應(yīng)。不然會(huì)報(bào)405錯(cuò)誤
  • 使用IDEA開發(fā)如果使用了lombok那么需要在Annotation Processors中將Enable annotation processing打?qū)?/li>

完整代碼地址

https://github.com/modouxiansheng/Doraemon/tree/master/springdemo

到此這篇關(guān)于SpringBoot2.0實(shí)現(xiàn)多圖片上傳加回顯的文章就介紹到這了,更多相關(guān)SpringBoot2.0多圖片上傳加回顯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java  StringBuilder類的詳解及簡(jiǎn)單實(shí)例

    java StringBuilder類的詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了java StringBuilder類的詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,實(shí)現(xiàn)了StringBuilder類的追加、插入、替換、刪除等操作,需要的朋友可以參考下
    2017-08-08
  • java注解的類型知識(shí)點(diǎn)總結(jié)

    java注解的類型知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于java注解的類型知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • 詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式

    詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式

    這篇文章主要介紹了詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Java中的自旋鎖與適應(yīng)性自旋鎖詳解

    Java中的自旋鎖與適應(yīng)性自旋鎖詳解

    這篇文章主要介紹了Java中的自旋鎖與適應(yīng)性自旋鎖詳解,在多處理器環(huán)境中某些資源的有限性,有時(shí)需要互斥訪問,這時(shí)候就需要引入鎖的概念,只有獲取了鎖的線程才能對(duì)資源進(jìn)行訪問,多線程的核心是CPU的時(shí)間分片,所以同一時(shí)刻只能有一個(gè)線程獲取到鎖,需要的朋友可以參考下
    2023-10-10
  • springboot手寫一個(gè)自己的starter源碼

    springboot手寫一個(gè)自己的starter源碼

    在本篇文章里小編給大家整理了關(guān)于springboot手寫一個(gè)自己的starter源碼的全部知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-06-06
  • Java常見面試題之final在java中的作用是什么

    Java常見面試題之final在java中的作用是什么

    這篇文章主要介紹了Java常見面試題之final在java中的作用是什么,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • SpringMvc入門指南(必看)

    SpringMvc入門指南(必看)

    下面小編就為大家?guī)硪黄猄pringMvc入門指南(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java數(shù)組常用排序算法實(shí)例小結(jié)

    Java數(shù)組常用排序算法實(shí)例小結(jié)

    這篇文章主要介紹了Java數(shù)組常用排序算法,結(jié)合實(shí)例形式總結(jié)分析了java數(shù)組常用的4種排序算法,包括冒泡排序、數(shù)組遞增排序、快速排序及選擇排序,需要的朋友可以參考下
    2017-12-12
  • 深入了解Java核心類庫(kù)--泛型類

    深入了解Java核心類庫(kù)--泛型類

    這篇文章主要為大家詳細(xì)介紹了java泛型類定義與使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Java結(jié)構(gòu)型模式中的組合模式詳解

    Java結(jié)構(gòu)型模式中的組合模式詳解

    組合模式,又叫部分整體模式,它創(chuàng)建了對(duì)象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下
    2023-02-02

最新評(píng)論