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

Spring Boot文件上傳簡單實例代碼

 更新時間:2019年08月21日 08:23:14   作者:程序魚  
在本篇文章里小編給大家分享的是關(guān)于Spring Boot 文件上傳簡易教程以及相關(guān)知識點,需要的朋友們參考下。

上傳文件是我們?nèi)粘J褂米顬閺V泛的功能之一,比如App端上傳頭像。本章演示如何從客戶端上傳到 Spring Boot 開發(fā)的 Api中。

https://github.com/fishpro/spring-boot-study/tree/master/spring-boot-study-upload

1 新建 Spring Boot Maven 示例工程項目

注意:本示例是用 IDEA 開發(fā)工具

  • File > New > Project,如下圖選擇 Spring Initializr 然后點擊 【Next】下一步
  • 填寫 GroupId(包名)、Artifact(項目名) 即可。點擊 下一步
  • groupId=com.fishpro
  • artifactId=upload
  • 選擇依賴 Spring Web Starter 前面打鉤。
  • 項目名設(shè)置為 spring-boot-study-upload.

文件上傳不需要引入第三方組件。

2 依賴引入 Pom.xml

為了演示代碼,這里引入 thymeleaf

<dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
 </dependencies>

3 編寫上傳示例
本章代碼主要演示單文件上傳和多文件上傳,前端采用 thymeleaf 模板,實際上就是一個html文件。文件清單包括

  • uploadfile.html 前端文件
  • FileController.java 控制層文件
  • FileUtil.java 文件常用類

3.1 控制層代碼

主要使用 MultipartFile 來實現(xiàn),如下代碼 /upload 和 /uploads 分別為單文件上傳和多文件上傳。其中 @Value("${fishpro.uploadPath}") 是配置文件中設(shè)置的。

server.port=8086
fishpro.uploadPath=/Users/jiaojunkang/Desktop/upload/
@Controller
public class FileController {

 @Value("${fishpro.uploadPath}")
 private String uploadPath;

 @GetMapping("/uploadfile")
 public String uploadfile(){
  return "uploadfile";
 }


 /**
  * 單文件
  * */
 @PostMapping("/upload")
 @ResponseBody
 Object upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
  Map<String,Object> map=new HashMap();
  map.put("status",0);
  String fileName = file.getOriginalFilename();
  fileName = UUID.randomUUID().toString(); //對文件名稱重命名

  try {
   FileUtil.uploadFile(file.getBytes(), uploadPath, fileName);
   map.put("filename",fileName);
  } catch (Exception e) {
   map.put("status",-1);
   map.put("message",e.getMessage());

  }


  return map;
 }

 /**
  * 多文件
  * */
 @PostMapping("/uploads")
 @ResponseBody
 Object uploads(@RequestParam("files") MultipartFile [] files, HttpServletRequest request) {
  Map<String,Object> map=new HashMap();
  map.put("status",0);
  List<String> filenames=new ArrayList<>();
  for (MultipartFile file: files
    ) {
   String ext = file.getOriginalFilename().split("\\.")[1];
   String fileName = file.getOriginalFilename();
   //fileName = UUID.randomUUID().toString()+"."+ext; //對文件名稱重命名

   try {
    FileUtil.uploadFile(file.getBytes(), uploadPath, fileName);
    filenames.add(fileName);
   } catch (Exception e) {
    map.put("status",-1);
    map.put("message",e.getMessage());
    return map;

   }
  }

  map.put("filename",filenames);
  return map;
 }
}

3.2 前端文件

前端文件這里演示的比較簡單,可以有多中形態(tài),這里使用 form 來提交。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<hr/>
<div>單位文件</div>
<form enctype="multipart/form-data" method="post" action="/upload">
  文件 <input type="file" name="file"/>
  <input type="submit" value="上傳"/>
</form>
<hr/>
<div>多文件</div>

<form enctype="multipart/form-data" method="post" action="/uploads">
  <p>文件1<input type="file" name="files"/></p>
  <p>文件2<input type="file" name="files"/></p>
  <p>文件3<input type="file" name="files"/></p>
  <p><input type="submit" value="上傳"/></p>
</form>
</body>
</html>

3.3 文件保存類

public class FileUtil {

  public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
    File targetFile = new File(filePath);
    if (!targetFile.exists()) {
      targetFile.mkdirs();
    }
    FileOutputStream out = new FileOutputStream(filePath + fileName);
    out.write(file);
    out.flush();
    out.close();
  }

  public static boolean deleteFile(String fileName) {
    File file = new File(fileName);
    // 如果文件路徑所對應(yīng)的文件存在,并且是一個文件,則直接刪除
    if (file.exists() && file.isFile()) {
      if (file.delete()) {
        return true;
      } else {
        return false;
      }
    } else {
      return false;
    }
  }

  public static String renameToUUID(String fileName) {
    return UUID.randomUUID() + "." + fileName.substring(fileName.lastIndexOf(".") + 1);
  }
}

以上就是本次介紹的全部知識點內(nèi)容,感謝大家的閱讀和對腳本之家的支持。

相關(guān)文章

  • 詳解tryAcquire()、addWaiter()、acquireQueued()

    詳解tryAcquire()、addWaiter()、acquireQueued()

    這篇文章主要tryAcquire()、addWaiter()、acquireQueued()的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Spring MVC   文件、cookies的接收 與REST響應(yīng)詳解

    Spring MVC   文件、cookies的接收 與REST響應(yīng)詳

    在SpringMVC中,使用@RequestPart注解可接收文件并處理多部分請求,同時可以通過@CookieValue和HttpServletResponse來獲取和設(shè)置Cookies,本文介紹Spring MVC   文件、cookies的接收 與REST響應(yīng),感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Java十道入門易踩坑題分析前篇

    Java十道入門易踩坑題分析前篇

    這篇文章總結(jié)分析了Java入門容易碰到的幾點易進坑的題目,對于新手小白剛開始學Java非常有益處,讓你少走避開彎路,感興趣的朋友快來看看吧
    2022-01-01
  • 一篇文章超詳細的介紹Java繼承

    一篇文章超詳細的介紹Java繼承

    Java中的繼承是一種機制,表示為一個對象獲取父對象的所有屬性和行為,下面這篇文章主要給大家介紹了關(guān)于Java繼承的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • SpringMVC請求的路徑變量里面寫正則表達式的方法

    SpringMVC請求的路徑變量里面寫正則表達式的方法

    這篇文章主要介紹了SpringMVC請求的路徑變量里面寫正則表達式的相關(guān)知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 詳解SpringBoot應(yīng)用服務(wù)啟動與安全終止

    詳解SpringBoot應(yīng)用服務(wù)啟動與安全終止

    這篇文章主要介紹了SpringBoot應(yīng)用服務(wù)啟動與安全終止,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 以用戶名注冊為例分析三種Action獲取數(shù)據(jù)的方式

    以用戶名注冊為例分析三種Action獲取數(shù)據(jù)的方式

    這篇文章主要介紹了以用戶名注冊為例分析三種Action獲取數(shù)據(jù)的方式的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Java解決約瑟夫問題代碼實例

    Java解決約瑟夫問題代碼實例

    這篇文章主要介紹了Java解決約瑟夫(環(huán))問題的代碼實例,決約瑟問題貌似經(jīng)常出現(xiàn)在面試題中,需要的朋友可以參考下
    2014-03-03
  • Java實現(xiàn)文件或文件夾的復制到指定目錄實例

    Java實現(xiàn)文件或文件夾的復制到指定目錄實例

    本篇文章主要介紹了Java實現(xiàn)文件或文件夾的復制到指定目錄實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Spring Boot DevTools使用教程

    Spring Boot DevTools使用教程

    DevTools通過提供自動重啟和LiveReload功能,使您更快、更輕松地開發(fā)Spring Boot應(yīng)用程序。這篇文章主要介紹了Spring Boot DevTools使用教程,需要的朋友可以參考下
    2018-11-11

最新評論

繁昌县| 潍坊市| 建湖县| 喀什市| 怀远县| 芷江| 于田县| 乃东县| 五莲县| 江源县| 新宾| 沾化县| 界首市| 镇坪县| 平乐县| 汪清县| 澜沧| 盈江县| 浦江县| 乡宁县| 齐河县| 平果县| 贡觉县| 永胜县| 华池县| 皮山县| 霍州市| 依兰县| 交口县| 四子王旗| 苏尼特右旗| 宝鸡市| 勐海县| 望城县| 二连浩特市| 贵州省| 阜宁县| 江达县| 白城市| 奉节县| 陈巴尔虎旗|