激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Spring Boot 會(huì)員管理系統(tǒng)之處理文件上傳功能

Spring Boot 會(huì)員管理系統(tǒng)之處理文件上傳功能

2021-04-13 12:33longer499 Java教程

Spring Boot會(huì)員管理系統(tǒng)的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎。這篇文章主要介紹了Spring Boot會(huì)員管理系統(tǒng)之處理文件上傳功能,需要的朋友可以參考下

溫馨提示

Spring Boot會(huì)員管理系統(tǒng)的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎。所以,可以學(xué)習(xí)下這些知識(shí)。當(dāng)然,直接入門的話使用是沒(méi)問(wèn)題,但是,涉及到一些異常和原理的話可能就有些困難。

1. 前端部分

在前端部分addMember.html是通過(guò)form表單來(lái)提交會(huì)員的信息,其中就包括了圖片上傳功能(這里涉及了文件上傳操作),表單部分代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<form th:action="@{/admin/addMember}" method="post" enctype="multipart/form-data" id="addMember">
              <div class="file-field input-field">
                <div class="btn">
                  <span>選擇頭像文件</span>
                  <input id="file" type="file" name="iconPath" multiple="" placeholder="選擇文件" accept="image/*" onchange="changeToop()">
                </div>
                <div class="file-path-wrapper">
                  <!--<input class="file-path validate" type="text" placeholder="Upload one or more files">-->
                  <img id="myimg" src="assets/iconPath/common.jpg" class="img-responsive img-thumbnail" style="width: 20%;height: 20%" />
                </div>
                <!--頭像文件上傳預(yù)覽-->
                <script>
                  function Id(id){
                    return document.getElementById(id);
                  }
                  function changeToop(){
                    var file = Id("file");
                    if(file.value===''){
                      //設(shè)置默認(rèn)圖片
                      Id("myimg").src='assets/iconPath/common.jpg';
                    }else{
                      preImg("file","myimg");
                    }
                  }
                  //獲取input[file]圖片的url Important
                  function getFileUrl(fileId) {
                    var url;
                    var file = Id(fileId);
                    var agent = navigator.userAgent;
                    if (agent.indexOf("MSIE")>=1) {
                      url = file.value;
                    } else if(agent.indexOf("Firefox")>0) {
                      url = window.URL.createObjectURL(file.files.item(0));
                    } else if(agent.indexOf("Chrome")>0) {
                      url = window.URL.createObjectURL(file.files.item(0));
                    }
                    return url;
                  }
                  //讀取圖片后預(yù)覽
                  function preImg(fileId,imgId) {
                    var imgPre =Id(imgId);
                    imgPre.src = getFileUrl(fileId);
                  }
                </script>
              </div>
              
              .......
              
            </form>

這里有一個(gè)注意事項(xiàng):因?yàn)樯婕拔募蟼鳎栽趂orm中需要加入enctype="multipart/form-data",而且就是input中的name屬性是與后端中的Controller映射方法的傳入?yún)?shù)名是一一對(duì)應(yīng)的。

2. 后端代碼實(shí)現(xiàn)

后端中對(duì)于SpringMVC框架可以對(duì)于文件進(jìn)行處理然后我們可以通過(guò)傳入?yún)?shù)的方式來(lái)接收文件

2.1 Controller處理傳入文件

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@PostMapping("/addMember")
  public String addMember(Member member, String gradeName, MultipartFile icon, Map<String, Object> model) {
    //處理上傳文件
    try {
      if (icon == null)//首先判斷上傳文件不為null
        return "error";
      if (icon.getOriginalFilename().equals("")) //如果上傳文件的原名為空字符串,則證明使用了默認(rèn)圖像
        member.setIconPath("/assets/icon/common.jpg"); //設(shè)置為我們的默認(rèn)圖像路徑
      else
        //這里通過(guò)了自己編寫的文件上傳工具類來(lái)處理上傳的MultipartFile,文件名設(shè)置為通過(guò)UUID產(chǎn)生的字符串
        member.setIconPath(FileUploadUtil.upload(icon, "/assets/icon/", UUIDRandomUtil.get32UUID()));
    } catch (Exception e) {
      e.printStackTrace();
      return "error";
    }
    
    .......
    
    return "addMemberSuccess";
  }

2.2 FileUploadUtil工具類保存文件

在Controller的MultipartFile文件傳入后需要進(jìn)一步,轉(zhuǎn)變?yōu)镕Ile并且保存到磁盤當(dāng)中,所以我分開(kāi)處理,把Controller的傳入文件交給FileUploadUtil工具類來(lái)處理,具體的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class FileUploadUtil {
  /**
   * 上傳文件
   * @param multipartFile multipartFile
   * @param prefixPath 前綴路徑,相對(duì)于整個(gè)項(xiàng)目中的路徑,路徑最前面不用加入“/
   * @param fileName 上傳后的文件名
   * @return 上傳后最終的相對(duì)路徑+文件名
   * @throws Exception 有可能空指針異常和IO異常
   */
  public static String upload(MultipartFile multipartFile, String prefixPath, String fileName) throws Exception {
    //得出上傳的絕對(duì)路徑
    String uploadPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() +"/static"+ prefixPath;
    File file = new File(uploadPath);
    if (!file.exists())
      if (file.mkdirs())
        System.out.println("成功創(chuàng)建目錄");
    //獲取上傳的后綴名
    String suffixName = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
    //新建最終確定的文件
    file = new File(uploadPath+fileName+suffixName);
    multipartFile.transferTo(file);
    return prefixPath+fileName+suffixName;
  }
}

上面中的ClassUtils是Spring提供的一個(gè)工具類,而調(diào)用方法getDefaultClassLoader().getResource("").getPath()是獲取當(dāng)前項(xiàng)目classpath下的路徑。

以上便是本系統(tǒng)中關(guān)于文件上傳的部分內(nèi)容,該系統(tǒng)的源碼以上傳GitHub

總結(jié)

以上所述是小編給大家介紹的Spring Boot 會(huì)員管理系統(tǒng)之處理文件上傳功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://www.cnblogs.com/lger/p/8597156.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产精品久久久久久久久久10秀 | 色偷偷一区 | 小视频在线看 | 亚洲啊v在线观看 | 一级免费观看 | 欧美77 | 999久久久国产999久久久 | 日本黄色免费播放 | 国产无限资源在线观看 | 国产午夜精品一区二区三区嫩草 | 九九热精品在线视频 | 欧美一级欧美 | 国产在线欧美日韩 | av成人免费| 国产1区视频| 国产免费一级 | 一级视频在线播放 | 91成人在线免费观看 | 91精品国产免费久久 | av在线免费看片 | 日韩视频在线观看免费视频 | 日韩欧美视频一区二区三区 | 成人一级视频在线观看 | 日韩av毛片免费观看 | 91短视频在线观看视频 | av免费在线网站 | 欧美一级性 | 视频在线色 | 亚洲国产精品久久久久久久久 | 男女污污视频网站 | 久久久久久久久国产 | 一区二区三区欧美在线 | 亚洲成人自拍电影 | 18视频在线观看娇喘 | 久久久www成人免费精品 | 欧美性受ⅹ╳╳╳黑人a性爽 | 涩涩99| 成人午夜视频免费 | 国产一区二区三区在线免费观看 | 一级黄色免费观看 | 毛片在哪看|