springboot上傳圖片文件步驟詳解
步驟一:基于前面springboot入門小demo
基于的springboot入門小demo,已包含了前面文章的知識點(比如:熱部署、全局異常處理器)。
步驟二:創(chuàng)建uploadPage.jsp上傳頁面
在jsp目錄下新建uploadPage.jsp,需要幾點:
1. method="post" 是必須的
2. enctype="multipart/form-data" 是必須的,表示提交二進制文件
3. name="file" 是必須的,和后續(xù)服務(wù)端對應(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
因為uploadPage.jsp在WEB-INF下,不能直接從瀏覽器訪問,所以要在這里加一個uploadPage跳轉(zhuǎn),這樣就可以通過。
測試訪問頁面:http://127.0.0.1:8080/uploadPage
訪問到uploadPage.jsp頁面了(只是可以訪問,還不能上傳)。
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 {
// 因為uploadPage.jsp 在WEB-INF下,不能直接從瀏覽器訪問,所以要在這里加一個uploadPage跳轉(zhuǎn),這樣就可以通過
@RequestMapping("/uploadPage")
public String uploadPage() {
return "uploadPage"; //過度跳轉(zhuǎn)頁
}
@PostMapping("/upload") // 等價于 @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ù)時間戳創(chuàng)建新的文件名,這樣即便是第二次上傳相同名稱的文件,也不會把第一次的文件覆蓋了
String fileName = System.currentTimeMillis() + file.getOriginalFilename();
//3.通過req.getServletContext().getRealPath("") 獲取當(dāng)前項目的真實路徑,然后拼接前面的文件名
String destFileName = req.getServletContext().getRealPath("") + "uploaded" + File.separator + fileName;
//4.第一次運行的時候,這個文件所在的目錄往往是不存在的,這里需要創(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文件夾下面,如果看不到,就刷新一哈。
所以通過這個 <img src="/uploaded/${fileName}"> 鏈接,就可以訪問到圖片。
步驟五:修改application.properties
設(shè)置上傳文件的大小,默認是1m,太小了,文件稍微大一點就會出錯
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp spring.http.multipart.maxFileSize=100Mb spring.http.multipart.maxRequestSize=100Mb
步驟六:測試
訪問測試地址:http://127.0.0.1:8080/uploadPage

上傳成功后,跳轉(zhuǎn)到showImg.jsp訪問圖片資源。

?。吹矫琅?,就比較精神?。。。?/p>
到此這篇關(guān)于springboot上傳圖片文件步驟詳解的文章就介紹到這了,更多相關(guān)springboot上傳圖片文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Jvisualvm監(jiān)控遠程SpringBoot項目的過程詳解
這篇文章主要介紹了Jvisualvm監(jiān)控遠程SpringBoot項目,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
Java中的SimpleDateFormat的線程安全問題詳解
這篇文章主要介紹了Java中的SimpleDateFormat的線程安全問題詳解,sonar 是一個代碼質(zhì)量管理工具,SonarQube是一個用于代碼質(zhì)量管理的開放平臺,為項目提供可視化報告, 連續(xù)追蹤項目質(zhì)量演化過程,需要的朋友可以參考下2024-01-01
spring boot 開發(fā)soap webservice的實現(xiàn)代碼
這篇文章主要介紹了spring boot 開發(fā)soap webservice的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
IDEA插件Statistic統(tǒng)計代碼快速分辨爛項目
這篇文章主要為大家介紹了使用IDEA插件Statistic來統(tǒng)計項目代碼,幫助大家快速識別出爛項目,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01
Java中十六進制和十進制之間互相轉(zhuǎn)換代碼示例
這篇文章主要給大家介紹了關(guān)于Java中十六進制和十進制之間互相轉(zhuǎn)換的相關(guān)資料,我們項目過程中總是要用到十進制與十六進制相互轉(zhuǎn)換的方法,需要的朋友可以參考下2023-07-07

