教你Springboot如何實現(xiàn)圖片上傳
1.首先圖片上傳,需要在數(shù)據(jù)庫定義一個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: 50MB
4.html頁面定義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 必須和后臺 上傳圖片的方法 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è)置語言 uploadUrl: '/user/uploadImg', //上傳的地址 allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后綴 showUpload: true, //是否顯示上傳按鈕 showCaption: false,//是否顯示標(biāo)題 browseClass: "btn btn-primary", //按鈕樣式 maxFileCount: 2, //表示允許同時上傳的最大文件個數(shù) enctype: 'multipart/form-data', validateInitialCount:true, previewFileIcon: "<i class='glyphicon glyphicon-king'></i>", msgFilesTooMany: "選擇上傳的文件數(shù)量({n}) 超過允許的最大數(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)建時間:2023年3月29日 下午3:21:17 * 修改人:ba * 修改時間:2023年3月29日 下午3:21:17 * 修改備注: * @param imgfile * @param request * @return</pre> */ public static String uploadFile(MultipartFile imgfile,HttpServletRequest request){ //1、上傳路徑:項目發(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(); } //生成新的文件名稱,原因:防止文件名稱一樣后者上傳的文件會覆蓋前者上傳的文件(前提是文件名稱必須一樣并且在用一個目錄下) //生成新的文件名稱,保證文件名稱唯一有兩種方法: // 1.通過UUID實現(xiàn)文件名稱唯一 (UUID會生成32位字母+數(shù)字唯一的一個字符串) // 2.通過時間戳現(xiàn)文件名稱唯一 (時間戳是毫秒級時間 時間會一直往上加,生成13位數(shù)字)注意只有java生成13位 其他則是10位比如oracle、mysql、php // 獲取時間戳 //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 + "\"}";//可以 }
訪問這個路徑http://localhost:8080/upload/b54e356b-6dba-48ae-8ea1-27b4dad158b5.png
訪問成功圖片上傳就完成了
到此這篇關(guān)于教你Springboot如何實現(xiàn)圖片上傳的文章就介紹到這了,更多相關(guān)Springboot圖片上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java整合mybatis實現(xiàn)過濾數(shù)據(jù)
這篇文章主要介紹了Java整合mybatis實現(xiàn)過濾數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01解決SpringMVC使用@RequestBody注解報400錯誤的問題
這篇文章主要介紹了解決SpringMVC使用@RequestBody注解報400錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09如何在 Spring Boot 中配置和使用 CSRF 保護(hù)
CSRF是一種網(wǎng)絡(luò)攻擊,它利用已認(rèn)證用戶的身份來執(zhí)行未經(jīng)用戶同意的操作,Spring Boot 提供了內(nèi)置的 CSRF 保護(hù)機制,可以幫助您防止這種類型的攻擊,這篇文章主要介紹了Spring?Boot?中的?CSRF?保護(hù)配置的使用方法,需要的朋友可以參考下2023-09-09Java中l(wèi)ist.foreach不能使用字符串拼接的問題
這篇文章主要介紹了Java中l(wèi)ist.foreach不能使用字符串拼接的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09在SpringBoot中使用UniHttp簡化天地圖路徑規(guī)劃調(diào)用實踐記錄(場景分析)
本文介紹了如何在SpringBoot項目中使用UniHttp簡化天地圖路徑規(guī)劃接口的調(diào)用,通過一個具體的例子展示了如何根據(jù)中文地址獲取經(jīng)緯度坐標(biāo),并使用UniHttp調(diào)用天地圖路徑規(guī)劃服務(wù),感興趣的朋友一起看看吧2025-02-02

Java詳解ScriptEngine接口動態(tài)執(zhí)行JS腳本