文章目錄
- 前言
- 一、創建SpringBoot專案
- 二、新建上傳下載的html檔案
- 1.內容
- 2.前端樣式
- 三、新建FileController.java
- 1.相關代碼
- 2.重新啟動專案
- 總結
前言
最近收到幾個粉絲小伙伴的私信,說能不能寫一篇SpringBoot專案的圖片檔案的上傳與下載案例,so 作為一個十分愛粉的小小( 菜雞)程式員,也為了感謝還在默默關注我的朋友們,我一氣呵成,自稱–>史上最簡SpringBoot專案的圖片檔案的上傳與下載,
一、創建SpringBoot專案
先創建一個spring-boot專案,創建成功以后的目錄如下:

注意:創建成功后,只需要按照上方結果目錄創建一個controller檔案夾,在controller包中新建一個FileController類,在static檔案夾中新建一個html檔案即可,pom.xml與application.properties主組態檔中,什么都不需要添加和配置,夠簡單直接吧
二、新建上傳下載的html檔案
1.內容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>檔案上傳+下載</title>
</head>
<body>
<!--post請求,post提交方式對應FlieController類中的@PostMapping方法-->
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<button type="submit">上傳</button>
</form>
<br/>
<!--學過web的朋友應該都知道,超鏈接默認是get請求,get提交方式對應FlieController類中的@GetMapping方法-->
<a href="/upload">
<button>下載</button>
</a>
</body>
</html>
2.前端樣式
啟動專案,瀏覽器地址欄輸入:http://localhost:8080/up_download.html

三、新建FileController.java
1.相關代碼
package com.sogu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.UUID;
/**
* @Description:檔案上傳下載,采用restful風格,會根據請求方式,自動執行對應的方法
* @Author nanyi
* @Date 2020/12/30 11:05
**/
@Controller
@RequestMapping("/upload")
public class FileController {
/**
* @Description:上傳檔案
*/
@PostMapping
@ResponseBody
public String upload(MultipartFile file) {
// 獲取原始檔案名
String filename = file.getOriginalFilename();
// 獲取檔案后綴名
String suffixName = filename.substring(filename.lastIndexOf("."));
// 檔案保存路徑
String filePath = "D:/upload/";
// 添加UUID編碼,防止檔案名重復
filename = filePath + UUID.randomUUID() + filename;
// 檔案物件
File file1 = new File(filename);
// 判斷路徑是否存在,如果不存在則創建
if (!file1.getParentFile().exists()) {
file1.getParentFile().mkdirs();
}
try {
// 保存到服務器中
file.transferTo(file1);
return "上傳成功";
} catch (IOException e) {
e.printStackTrace();
}
return "上傳失敗";
}
/**
* @Description:下載檔案
*/
@GetMapping
public void download(HttpServletResponse response) throws Exception {
// 檔案地址,真實環境是存放在資料庫中的
File file = new File("D:\\upload\\南一小寶寶啊.txt");
// 傳入輸出物件
FileInputStream fileInputStream = new FileInputStream(file);
// 設定相關格式
response.setContentType("application/force-download");
// 設定下載后的檔案名以及header
response.addHeader("Content-disposition", "attachment;fileName=" + "南一小寶寶啊.txt");
// 創建輸出物件
ServletOutputStream outputStream = response.getOutputStream();
// 常規操作
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fileInputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
fileInputStream.close();
}
}
2.重新啟動專案
重新啟動專案,瀏覽器地址欄輸入:http://localhost:8080/up_download.html
(1)執行上傳檔案功能

??點擊上傳成功后回傳:上傳成功

??去檔案夾中查看,剛剛上傳的檔案已經存在

(2)執行下載檔案功能
??點擊下載按鈕下載檔案

總結
日常一句:我是菜雞,我是菜雞,趕緊滾去學習,,,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243306.html
標籤:java
上一篇:Spring Bean完整生命周期測驗,超詳細輸出結果展示
下一篇:Java基本語法
