最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年07月28日 11:20:51   作者:不學(xué)無數(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;
    }
}

遇到的坑

  • 如果返回值是模板文件的文件名,那么無論是類上還是方法上都不能加@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并發(fā)等待條件的實(shí)現(xiàn)原理詳解

    java并發(fā)等待條件的實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了java并發(fā)等待條件的實(shí)現(xiàn)原理詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • Java項(xiàng)目中獲取路徑的絕對(duì)路徑問題和相對(duì)路徑問題

    Java項(xiàng)目中獲取路徑的絕對(duì)路徑問題和相對(duì)路徑問題

    這篇文章主要介紹了如何Java項(xiàng)目中獲取文件地址,在 Java 項(xiàng)目中我們經(jīng)常會(huì)讀取配置文件,但是文件的路徑在獲取時(shí)我們是怎么得到的?下面我們就一起進(jìn)入文章學(xué)習(xí)該內(nèi)容吧,需要的朋友可以參考下
    2022-02-02
  • Java中對(duì)于雙屬性枚舉的使用案例

    Java中對(duì)于雙屬性枚舉的使用案例

    今天小編就為大家分享一篇關(guān)于Java中對(duì)于雙屬性枚舉的使用案例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 一文秒懂Java enum常見的用法講解

    一文秒懂Java enum常見的用法講解

    這篇文章主要介紹了一文秒懂Java enum常見的用法講解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 手把手教你用Java實(shí)現(xiàn)一套簡(jiǎn)單的鑒權(quán)服務(wù)

    手把手教你用Java實(shí)現(xiàn)一套簡(jiǎn)單的鑒權(quán)服務(wù)

    現(xiàn)今大部分系統(tǒng)都會(huì)有自己的鑒權(quán)服務(wù),本文介紹了最常用的鑒權(quán)服務(wù),就是日常用戶的登錄登出,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Nacos集群模式下服務(wù)無法注冊(cè)問題

    Nacos集群模式下服務(wù)無法注冊(cè)問題

    這篇文章主要介紹了Nacos集群模式下服務(wù)無法注冊(cè)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解SpringBoot依賴注入和使用配置文件

    詳解SpringBoot依賴注入和使用配置文件

    這篇文章主要介紹了SpringBoot依賴注入和使用配置文件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • Java實(shí)現(xiàn)帶附件的郵件發(fā)送功能

    Java實(shí)現(xiàn)帶附件的郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)帶附件的郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 關(guān)于java連接池/線程池/內(nèi)存池/進(jìn)程池等匯總分析

    關(guān)于java連接池/線程池/內(nèi)存池/進(jìn)程池等匯總分析

    這篇文章主要介紹了關(guān)于java連接池/線程池/內(nèi)存池/進(jìn)程池等匯總分析,本文將介紹池技術(shù)的由來、原理、優(yōu)缺點(diǎn)以及常見的池技術(shù)類型,需要的朋友可以參考下
    2023-04-04
  • Spring Cloud Alibaba配置多環(huán)境管理詳解與實(shí)戰(zhàn)代碼

    Spring Cloud Alibaba配置多環(huán)境管理詳解與實(shí)戰(zhàn)代碼

    本文通過實(shí)際案例詳細(xì)介紹了springboot配置多環(huán)境管理的使用,以及基于nacos的配置多環(huán)境管理的實(shí)踐,在實(shí)際開發(fā)中,配置多環(huán)境管理是一個(gè)很難避開的問題,同時(shí)也是微服務(wù)治理中一個(gè)很重要的內(nèi)容,感興趣的朋友跟隨小編一起看看吧
    2024-06-06

最新評(píng)論

孟州市| 济南市| 老河口市| 措勤县| 鄂托克旗| 西丰县| 乐亭县| 宁海县| 南投县| 宁波市| 政和县| 杭锦旗| 开原市| 乌鲁木齐县| 舞钢市| 开封县| 丰县| 临城县| 南乐县| 太湖县| 武陟县| 蒙山县| 五华县| 乾安县| 罗甸县| 灌云县| 黔南| 盐边县| 孝义市| 斗六市| 芦溪县| 和田县| 万年县| 东山县| 嵩明县| 泊头市| 都昌县| 龙门县| 天镇县| 邓州市| 东方市|