教你Springboot如何實(shí)現(xiàn)圖片上傳
1.首先圖片上傳,需要在數(shù)據(jù)庫(kù)定義一個(gè)varchar類型的img字段圖片字段

2.需要在pom文件加圖片上傳的配置文件
<!--上傳圖片-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>3.在yml里添加限制圖片大小
#配置mysql的連接
spring:
#圖片上傳
servlet:
multipart:
enabled: true
max-file-size: 50MB
max-request-size: 50MB4.html頁(yè)面定義div
<div class="form-group">
<label class="col-sm-2 control-label">圖片</label>
<div class="col-sm-10">
<input name="goodsImg" id="testimg">
<!-- imgfile 是上傳圖片的參數(shù) 類型是 MultipartFile 文件類型
imgfile 必須和后臺(tái) 上傳圖片的方法 uploadImg 參數(shù)保持一致 -->
<input type="file" multiple class="projectfile" accept="image/*" name="imgfile" id="goodsImg">
</div>
</div>js中定義函數(shù) 圖片上傳
<script>
//上傳圖片
function uploadImg(url){
$('#goodsImg').fileinput({
initialPreview:url,
//初始化圖片配置:
initialPreviewConfig: [
{key: 1, showDelete: false}
],
//是否初始化圖片顯示
initialPreviewAsData: true,
language: 'zh', //設(shè)置語(yǔ)言
uploadUrl: '/user/uploadImg', //上傳的地址
allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后綴
showUpload: true, //是否顯示上傳按鈕
showCaption: false,//是否顯示標(biāo)題
browseClass: "btn btn-primary", //按鈕樣式
maxFileCount: 2, //表示允許同時(shí)上傳的最大文件個(gè)數(shù)
enctype: 'multipart/form-data',
validateInitialCount:true,
previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
msgFilesTooMany: "選擇上傳的文件數(shù)量({n}) 超過(guò)允許的最大數(shù)值{m}!",
}).on('fileuploaded', function(event, data, previewId, index) {
alert(data.response.path);//http
//http://localhost:8080/ssm_bootstrap/upload/1279fabb-5515-44e2-84e8-4a7dd79cc08c.JPG
var imgval = "http://"+ location.host+"/"+data.response.path;
$('#testimg').val(imgval);
});
}
</script>5.圖片上傳工具類
public class FileUtil {
//上傳
/**
* <pre>uploadFile(上傳)
* 創(chuàng)建人:wrx
* 創(chuàng)建時(shí)間:2023年3月29日 下午3:21:17
* 修改人:ba
* 修改時(shí)間:2023年3月29日 下午3:21:17
* 修改備注:
* @param imgfile
* @param request
* @return</pre>
*/
public static String uploadFile(MultipartFile imgfile,HttpServletRequest request){
//1、上傳路徑:項(xiàng)目發(fā)布tomcat服務(wù)器
//D:\workUtilsInstall\apache-tomcat-8.0.0\webapps\week_employee_hzy\\upload
String path = request.getServletContext().getRealPath("/")+"/upload";
File file = new File(path);
if(!file.exists()){//不存在
file.mkdirs();
}
//生成新的文件名稱,原因:防止文件名稱一樣后者上傳的文件會(huì)覆蓋前者上傳的文件(前提是文件名稱必須一樣并且在用一個(gè)目錄下)
//生成新的文件名稱,保證文件名稱唯一有兩種方法:
// 1.通過(guò)UUID實(shí)現(xiàn)文件名稱唯一 (UUID會(huì)生成32位字母+數(shù)字唯一的一個(gè)字符串)
// 2.通過(guò)時(shí)間戳現(xiàn)文件名稱唯一 (時(shí)間戳是毫秒級(jí)時(shí)間 時(shí)間會(huì)一直往上加,生成13位數(shù)字)注意只有java生成13位 其他則是10位比如oracle、mysql、php
// 獲取時(shí)間戳
//long currentTimeMillis = System.currentTimeMillis();
//System.out.println(currentTimeMillis);
String uuid = UUID.randomUUID().toString();
String oldName = imgfile.getOriginalFilename();//1.jpg
String suffix = oldName.substring(oldName.lastIndexOf("."));
String newFile = uuid+suffix;
File file2 = new File(path+"\\"+newFile);
try {
imgfile.transferTo(file2);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "upload/"+newFile;
}
}6.Controller層調(diào)用圖片上傳方法
/**
*
*調(diào)用圖片上傳工具類
* @param imgfile
* @param request
* @return java.lang.String
* @author wrx
* @date 2023/5/17 0017 16:00
*/
@RequestMapping("uploadImg")
public String uploadImg(MultipartFile imgfile, HttpServletRequest request){
String filePath = FileUtil.uploadFile(imgfile, request);
System.out.println("{\"path\":\"" + filePath + "\"}");
return "{\"path\":\"" + filePath + "\"}";//可以
}
訪問(wèn)這個(gè)路徑http://localhost:8080/upload/b54e356b-6dba-48ae-8ea1-27b4dad158b5.png
訪問(wèn)成功圖片上傳就完成了

到此這篇關(guān)于教你Springboot如何實(shí)現(xiàn)圖片上傳的文章就介紹到這了,更多相關(guān)Springboot圖片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java整合mybatis實(shí)現(xiàn)過(guò)濾數(shù)據(jù)
這篇文章主要介紹了Java整合mybatis實(shí)現(xiàn)過(guò)濾數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問(wèn)題
這篇文章主要介紹了解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
2020最新eclipse安裝過(guò)程及細(xì)節(jié)
這篇文章主要介紹了2020最新eclipse安裝過(guò)程及細(xì)節(jié),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
如何在 Spring Boot 中配置和使用 CSRF 保護(hù)
CSRF是一種網(wǎng)絡(luò)攻擊,它利用已認(rèn)證用戶的身份來(lái)執(zhí)行未經(jīng)用戶同意的操作,Spring Boot 提供了內(nèi)置的 CSRF 保護(hù)機(jī)制,可以幫助您防止這種類型的攻擊,這篇文章主要介紹了Spring?Boot?中的?CSRF?保護(hù)配置的使用方法,需要的朋友可以參考下2023-09-09
Java中l(wèi)ist.foreach不能使用字符串拼接的問(wèn)題
這篇文章主要介紹了Java中l(wèi)ist.foreach不能使用字符串拼接的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
在SpringBoot中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃調(diào)用實(shí)踐記錄(場(chǎng)景分析)
本文介紹了如何在SpringBoot項(xiàng)目中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃接口的調(diào)用,通過(guò)一個(gè)具體的例子展示了如何根據(jù)中文地址獲取經(jīng)緯度坐標(biāo),并使用UniHttp調(diào)用天地圖路徑規(guī)劃服務(wù),感興趣的朋友一起看看吧2025-02-02
Java詳解ScriptEngine接口動(dòng)態(tài)執(zhí)行JS腳本
maven實(shí)現(xiàn)docker自動(dòng)化部署插件的使用

