欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Boot簡單實現(xiàn)文件上傳功能

 更新時間:2022年08月23日 15:42:18   作者:不斷前進的皮卡丘  
這篇文章主要介紹了Spring?Boot簡單實現(xiàn)文件上傳功能,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

  • 前端處理 通過form表單來上傳文件
  • 提交方式為post
  • enctype格式為"multipart/form-data"
  • input類型為file
  • name屬性必須和Controller中方法的形參名稱一致
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>用戶注冊</h2>
    <form action="/register" method="post" enctype="multipart/form-data">
        用戶名:<input type="text" name="username"><br><br>
        密碼  :<input type="password" name="password"><br><br>
        頭像  :<input type="file" name="uploadFile"><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

后端處理

創(chuàng)建一個數(shù)據(jù)庫用來保存登錄的用戶名,密碼,文件名

我們可以寫一個工具類:

public class UUIDUtils {
    public static String createNewUUID(){
        String uuid = UUID.randomUUID().toString();
        //如果要把uuid的-去掉替換成空字符串 然后需要把32為字符串變成64字符串
        uuid = uuid.replace("-", "");
        return uuid+uuid;
    }
}

實體類User:

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private String filename;
}

Controller:

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 顯示注冊畫面
     * @return
     */
    @RequestMapping("/show")
    public String show(){
        return "/page/register.html";
    }
    @PostMapping("/register")
    public String register(User user, @RequestParam("uploadFile") MultipartFile uploadFile){
        System.out.println("用戶:"+user);
        System.out.println("文件:"+uploadFile);
        //創(chuàng)建本地文件
        //思考文件名,文件名要是唯一的 必須要保證每一個用戶注冊上傳的圖片,文件等,必須保存成唯一的文件名
        //Java技術(shù) Java UUID User Unique ID 本身用于給用戶指定唯一的ID,可以用它來產(chǎn)生唯一的隨機字符串
        //uuid默認(rèn)返回的是32位字母組成的隨機字符串,重復(fù)的概率幾乎為0
        //創(chuàng)建唯一文件名
        String fileName= UUIDUtils.createNewUUID();
        //我們需要文件的后綴也應(yīng)該不是寫死的,前端上傳的后綴是啥,我們保存的就是什么
        //獲取原生文件的文件名
        String originalFilename = uploadFile.getOriginalFilename();
        System.out.println(originalFilename);
        //創(chuàng)建文件的后綴名
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //創(chuàng)建新的文件路徑
        String filePath=fileName+suffix;

        File srcFile = new File("D:/springboot/download/img/"+filePath);
        try {
            //把前端傳送的文件保存在本地中
            uploadFile.transferTo(srcFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        user.setFilename(filePath);
        try {
            userService.register(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}

Service

public interface UserService {
    void register(User user) throws Exception;
}

Service實現(xiàn)類

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public void register(User user) throws Exception {
        userMapper.insert(user);
    }
}

Mapper

@Mapper
public interface UserMapper {
    @Insert("insert into user values(default,#{username},#{password},#{filename})")
    void insert(User user);
}

物理路徑和虛擬路徑映射

先準(zhǔn)備好頁面jsp

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Title</title>
      </head>
      <body>
        <h2>文件的上傳</h2>
        <form action="/file/upload" method="post" enctype="multipart/form-data">
          文件上傳:<input type="file" name="uploadFile">


          <input type="submit" value="提交">
        </form>
      </body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <img src="/img/${filePath}">圖像</img>
    路徑:${filePath}
</body>
</html>

編寫Controller

@Controller
@RequestMapping("/file")
public class FileUploadController {
    /**
    * 顯示畫面
    * @return
    */
    @RequestMapping("/show")
    public String show(){
        return "file.jsp";
    }

    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    public String fileUpload(MultipartFile uploadFile, HttpSession session){
        //利用uuid創(chuàng)建唯一的字符串 讓這個字符串作為文件名
        String fileName = UUIDUtils.createNewUUID();

        //獲取上傳文件的文件名
        String originalFilename = uploadFile.getOriginalFilename();
        //獲取后綴名
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //創(chuàng)建文件保存路徑
        String filePath=fileName+suffix;
        File srcFile=new File("D:/springboot/download/img/"+filePath);
        //把前端文件保存在本地
        try {
            uploadFile.transferTo(srcFile);
            //把文件存放在本地的文件路徑保存在session域中
            session.setAttribute("filePath", filePath);

        } catch (IOException e) {
            e.printStackTrace();
        }
        //我們希望網(wǎng)頁上可以把圖片顯示出來
        System.out.println("文件存放路徑:"+filePath);
        return "show.jsp";
    }
}

不過,我們可以發(fā)現(xiàn),當(dāng)我們點擊提交的時候,圖片還是無法顯示:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    //實現(xiàn)資源的虛擬路徑和物理路徑的映射

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/img/**")
                 .addResourceLocations("file:"+"D:\\springboot\\download\\img\\");
    }
}

addResourceHandler(“xxx”) 用于指定對外暴露的訪問路徑,addResourceLocations(“xxx”) 用于指定文件放置路徑

到此這篇關(guān)于Spring Boot簡單實現(xiàn)文件上傳功能的文章就介紹到這了,更多相關(guān)Spring Boot文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows系統(tǒng)下Java連接SQL Server的方法簡介

    Windows系統(tǒng)下Java連接SQL Server的方法簡介

    這篇文章主要介紹了Windows系統(tǒng)下Java連接SQL Server的方法,分別是JDBC和JTDS的相關(guān)使用,需要的朋友可以參考下
    2015-09-09
  • MyBatis實現(xiàn)表連接查詢寫法(三種對應(yīng)關(guān)系)的方法總結(jié)

    MyBatis實現(xiàn)表連接查詢寫法(三種對應(yīng)關(guān)系)的方法總結(jié)

    這篇文章主要介紹了MyBatis實現(xiàn)表連接查詢寫法(一對一關(guān)系、一對多關(guān)系、多對多關(guān)系)的方法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-01-01
  • Java如何設(shè)置PDF文檔背景色詳解

    Java如何設(shè)置PDF文檔背景色詳解

    這篇文章主要介紹了Java如何設(shè)置PDF文檔背景色詳解,一般生成的PDF文檔默認(rèn)的文檔底色為白色,我們可以通過一定方法來更改文檔的背景色,以達到文檔美化以及保護雙眼的作用。 以下內(nèi)容提供了Java編程來設(shè)置PDF背景色的方法,需要的朋友可以參考下
    2019-07-07
  • SpringBoot3集成Kafka的方法詳解

    SpringBoot3集成Kafka的方法詳解

    Kafka是一個開源的分布式事件流平臺,常被用于高性能數(shù)據(jù)管道、流分析、數(shù)據(jù)集成和關(guān)鍵任務(wù)應(yīng)用,下面我們就來看看SpringBoot3是如何集成Kafka的吧
    2023-08-08
  • Java基礎(chǔ)之包裝類

    Java基礎(chǔ)之包裝類

    這篇文章主要介紹了Java基礎(chǔ)之包裝類,文中有非常詳細(xì)的代碼示例及基礎(chǔ)知識詳解,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很大的幫助喲,需要的朋友可以參考下
    2021-05-05
  • 解決Spring Security 用戶帳號已被鎖定問題

    解決Spring Security 用戶帳號已被鎖定問題

    這篇文章主要介紹了解決Spring Security 用戶帳號已被鎖定問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 解決idea每次新建項目都需要重新指定maven目錄

    解決idea每次新建項目都需要重新指定maven目錄

    這篇文章主要介紹了解決idea每次新建項目都需要配置maven,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 在Java中FreeMarker?模板來定義字符串模板

    在Java中FreeMarker?模板來定義字符串模板

    這篇文章主要介紹了在Java中FreeMarker?模板來定義字符串模板,文章基于Java的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • SpringBoot?Security的自定義異常處理

    SpringBoot?Security的自定義異常處理

    這篇文章主要介紹了SpringBoot?Security的自定義異常處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java classloader和namespace詳細(xì)介紹

    Java classloader和namespace詳細(xì)介紹

    這篇文章主要介紹了Java classloader和namespace詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論