springboot上傳圖片文件步驟詳解
步驟一:基于前面springboot入門(mén)小demo
基于的springboot入門(mén)小demo,已包含了前面文章的知識(shí)點(diǎn)(比如:熱部署、全局異常處理器)。
步驟二:創(chuàng)建uploadPage.jsp上傳頁(yè)面
在jsp目錄下新建uploadPage.jsp,需要幾點(diǎn):
1. method="post" 是必須的
2. enctype="multipart/form-data" 是必須的,表示提交二進(jìn)制文件
3. name="file" 是必須的,和后續(xù)服務(wù)端對(duì)應(yīng)
4. accept="image/*" 表示只選擇圖片
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>圖片上傳</title> </head> <body> <form action="upload" method="post" enctype="multipart/form-data"> 選擇圖片:<input type="file" name="file" accept="image/*" /> <br> <input type="submit" value="立刻上傳"> </form> </body> </html>
步驟三:創(chuàng)建UploadController.java
因?yàn)閡ploadPage.jsp在WEB-INF下,不能直接從瀏覽器訪問(wèn),所以要在這里加一個(gè)uploadPage跳轉(zhuǎn),這樣就可以通過(guò)。
測(cè)試訪問(wèn)頁(yè)面:http://127.0.0.1:8080/uploadPage
訪問(wèn)到uploadPage.jsp頁(yè)面了(只是可以訪問(wèn),還不能上傳)。
package cn.xdf.springboot.controller; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @Controller public class UploadController { // 因?yàn)閡ploadPage.jsp 在WEB-INF下,不能直接從瀏覽器訪問(wèn),所以要在這里加一個(gè)uploadPage跳轉(zhuǎn),這樣就可以通過(guò) @RequestMapping("/uploadPage") public String uploadPage() { return "uploadPage"; //過(guò)度跳轉(zhuǎn)頁(yè) } @PostMapping("/upload") // 等價(jià)于 @RequestMapping(value = "/upload", method = RequestMethod.POST) public String uplaod(HttpServletRequest req, @RequestParam("file") MultipartFile file, Model m) {//1. 接受上傳的文件 @RequestParam("file") MultipartFile file try { //2.根據(jù)時(shí)間戳創(chuàng)建新的文件名,這樣即便是第二次上傳相同名稱的文件,也不會(huì)把第一次的文件覆蓋了 String fileName = System.currentTimeMillis() + file.getOriginalFilename(); //3.通過(guò)req.getServletContext().getRealPath("") 獲取當(dāng)前項(xiàng)目的真實(shí)路徑,然后拼接前面的文件名 String destFileName = req.getServletContext().getRealPath("") + "uploaded" + File.separator + fileName; //4.第一次運(yùn)行的時(shí)候,這個(gè)文件所在的目錄往往是不存在的,這里需要?jiǎng)?chuàng)建一下目錄(創(chuàng)建到了webapp下uploaded文件夾下) File destFile = new File(destFileName); destFile.getParentFile().mkdirs(); //5.把瀏覽器上傳的文件復(fù)制到希望的位置 file.transferTo(destFile); //6.把文件名放在model里,以便后續(xù)顯示用 m.addAttribute("fileName", fileName); } catch (FileNotFoundException e) { e.printStackTrace(); return "上傳失敗," + e.getMessage(); } catch (IOException e) { e.printStackTrace(); return "上傳失敗," + e.getMessage(); } return "showImg"; } }
步驟四:創(chuàng)建showImg.jps
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>上傳圖片</title> </head> <body> <img src="/uploaded/${fileName}"> </body> </html>
文件最終上傳到webapp下面的uploaded文件夾下面,如果看不到,就刷新一哈。
所以通過(guò)這個(gè) <img src="/uploaded/${fileName}"> 鏈接,就可以訪問(wèn)到圖片。
步驟五:修改application.properties
設(shè)置上傳文件的大小,默認(rèn)是1m,太小了,文件稍微大一點(diǎn)就會(huì)出錯(cuò)
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp spring.http.multipart.maxFileSize=100Mb spring.http.multipart.maxRequestSize=100Mb
步驟六:測(cè)試
訪問(wèn)測(cè)試地址:http://127.0.0.1:8080/uploadPage
上傳成功后,跳轉(zhuǎn)到showImg.jsp訪問(wèn)圖片資源。
(看到美女,就比較精神!?。。?/p>
到此這篇關(guān)于springboot上傳圖片文件步驟詳解的文章就介紹到這了,更多相關(guān)springboot上傳圖片文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
【面試】Spring事務(wù)面試考點(diǎn)吐血整理(建議珍藏)
本文是小編給大家收藏整理的Spring事務(wù)面試考點(diǎn),非常不錯(cuò),值得收藏,感興趣的朋友參考下吧2019-04-04Java數(shù)據(jù)結(jié)構(gòu)和算法之冒泡排序(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
冒泡排序(Bubble Sort)是一種簡(jiǎn)單的排序算法。本文重點(diǎn)給大家介紹java數(shù)據(jù)結(jié)構(gòu)和算法之冒泡排序,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-04-04???????Spring多租戶數(shù)據(jù)源管理 AbstractRoutingDataSource
本文技術(shù)了???????Spring多租戶數(shù)據(jù)源管理 AbstractRoutingDataSource,下文詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下2022-05-05SpringCloud OpenFeign超時(shí)控制示例詳解
在Spring Cloud中使用OpenFeign時(shí),可以通過(guò)配置來(lái)控制請(qǐng)求的超時(shí)時(shí)間,這篇文章主要介紹了SpringCloud OpenFeign超時(shí)控制,需要的朋友可以參考下2024-05-05SpringBoot Validation入?yún)⑿r?yàn)國(guó)際化的項(xiàng)目實(shí)踐
在Spring Boot中,可以使用Validation和國(guó)際化來(lái)實(shí)現(xiàn)對(duì)入?yún)⒌男r?yàn),本文就來(lái)介紹一下SpringBoot Validation入?yún)⑿r?yàn)國(guó)際化,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10SpringBoot2零基礎(chǔ)到精通之JUnit 5與指標(biāo)監(jiān)控
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)JUnit 5與指標(biāo)監(jiān)控2022-03-03