SpringMVC文件上傳原理及實(shí)現(xiàn)過程解析
一、文件上傳的必要前提
- A form 表單的 enctype 取值必須是:multipart/form-data(默認(rèn)值是:application/x-www-form-urlencoded) enctype:是表單請(qǐng)求正文的類型
- B method 屬性取值必須是 Post
- C 提供一個(gè)文件選擇域 input type=file
二、借助第三方組件實(shí)現(xiàn)文件上傳
三、
/** * springmvc跨服務(wù)器上傳文件 * @return */ @RequestMapping("/testFileUpload1") public String testFileUpload1(MultipartFile upload) throws IOException { System.out.println("跨服務(wù)器文件上傳..."); // 定義上傳文件服務(wù)器路徑 String path = "http://localhost:9090/uploads/"; // 說明上傳文件項(xiàng) // 獲取上傳文件的名稱 String filename = upload.getOriginalFilename(); // 把文件的名稱設(shè)置唯一值,uuid String uuid = UUID.randomUUID().toString().replace("-", ""); filename = uuid+"_"+filename; // 創(chuàng)建客戶端的對(duì)象 Client client = Client.create(); // 和圖片服務(wù)器進(jìn)行連接 WebResource webResource = client.resource(path + filename); // 上傳文件 webResource.put(upload.getBytes()); return "success"; } /** * * 這里的upload必須與index.jsp的upload一致 * * springmvc文件上傳 * @return */ @RequestMapping("/testFileUpload") public String testFileUpload(HttpServletRequest request, MultipartFile upload) throws IOException { // 使用fileupload組件完成文件上傳 // 上傳的位置(獲取上傳到服務(wù)器上的文件路徑) String path = request.getSession().getServletContext().getRealPath("/uploads/"); // 判斷,該路徑是否存在 File file = new File(path); if(!file.exists()){ file.mkdir(); } // 說明上傳文件項(xiàng) // 獲取上傳文件的名稱 String filename = upload.getOriginalFilename(); // 把文件的名稱設(shè)置唯一值,uuid String uuid = UUID.randomUUID().toString().replace("-", ""); filename = uuid+"_"+filename; // 完成文件上傳 upload.transferTo(new File(path,filename)); return "success"; }
四、在springmvc.xml配置文件解析器
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringMVC使用第三方組件實(shí)現(xiàn)文件上傳
- ssm框架Springmvc文件上傳實(shí)現(xiàn)代碼詳解
- Ajax實(shí)現(xiàn)文件上傳功能(Spring MVC)
- SpringMVC 上傳文件 MultipartFile 轉(zhuǎn)為 File的方法
- SpringMVC上傳文件并保存到本地代碼實(shí)例
- SpringMVC實(shí)現(xiàn)多文件上傳
- SpringMVC 單文件,多文件上傳實(shí)現(xiàn)詳解
- 利用SpringMVC和Ajax實(shí)現(xiàn)文件上傳功能
- Springmvc文件上傳實(shí)現(xiàn)流程解析
相關(guān)文章
java根據(jù)擴(kuò)展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例
這篇文章主要介紹了java根據(jù)擴(kuò)展名獲取系統(tǒng)圖標(biāo)和文件圖標(biāo)示例,需要的朋友可以參考下2014-03-03SpringBoot使用Redis對(duì)用戶IP進(jìn)行接口限流的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot使用Redis對(duì)用戶IP進(jìn)行接口限流,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07實(shí)現(xiàn)一個(gè)基于Servlet的hello world程序詳解步驟
Java Servlet 是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請(qǐng)求和 HTTP 服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序之間的中間層2022-02-02java控制臺(tái)實(shí)現(xiàn)可視化日歷小程序
這篇文章主要為大家詳細(xì)介紹了java控制臺(tái)實(shí)現(xiàn)可視化日歷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性的設(shè)計(jì)思路
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性,這里涉及到的技術(shù)知識(shí)點(diǎn)有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03mybatis foreach批量插入數(shù)據(jù):Oracle與MySQL區(qū)別介紹
這篇文章主要介紹了,需要的朋友可以參考下2018-01-01WebSocket實(shí)現(xiàn)Web聊天室功能
這篇文章主要為大家詳細(xì)介紹了WebSocket實(shí)現(xiàn)Web聊天室功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Spring-boot原理及spring-boot-starter實(shí)例和代碼
spring-boot的starter是一個(gè)通過maven完成自包含并通過annotation配置使得可被spring上下文發(fā)現(xiàn)并實(shí)例化的一個(gè)可插拔的組件或服務(wù)。這篇文章主要介紹了Spring-boot原理及spring-boot-starter實(shí)例和代碼 ,需要的朋友可以參考下2019-06-06