真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot文件上傳簡單實例代碼

上傳文件是我們日常使用最為廣泛的功能之一,比如App端上傳頭像。本章演示如何從客戶端上傳到 Spring Boot 開發(fā)的 Api中。

十年專注成都網(wǎng)站制作,成都定制網(wǎng)頁設計,個人網(wǎng)站制作服務,為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設計流程、步驟,成功服務上千家企業(yè)。為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及定制高端網(wǎng)站建設服務,專注于成都定制網(wǎng)頁設計,高端網(wǎng)頁制作,對成都花箱等多個方面,擁有豐富的網(wǎng)站維護經(jīng)驗。

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 前面打鉤。
  • 項目名設置為 spring-boot-study-upload.

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

2 依賴引入 Pom.xml

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


  
   org.springframework.boot
   spring-boot-starter-web
  

  
   org.springframework.boot
   spring-boot-starter-thymeleaf
  
  
   org.springframework.boot
   spring-boot-starter-test
   test
  
 

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

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

3.1 控制層代碼

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

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 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 map=new HashMap();
  map.put("status",0);
  List 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 來提交。




  
  Title



單位文件
文件

多文件

文件1

文件2

文件3

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);
    // 如果文件路徑所對應的文件存在,并且是一個文件,則直接刪除
    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);
  }
}

以上就是本次介紹的全部知識點內容,感謝大家的閱讀和對創(chuàng)新互聯(lián)的支持。


文章標題:SpringBoot文件上傳簡單實例代碼
URL分享:http://weahome.cn/article/pisdec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部