小編給大家分享一下SpringMVC如何實現(xiàn)文件上傳,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)威縣免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
SpringMVC為文件上傳提供了直接的支持,這種支持是用即插即用的MultipartResolver實現(xiàn)的。SpringMVC使用Apache Commons FileUpload技術(shù)實現(xiàn)了一個MultipartResolver實現(xiàn)類:CommonsMultipartResolver。因此,SpringMVC的文件上傳還需要依賴Apache Commons FileUpload的組件。
1. 添加pom依賴
commons-io commons-io 2.3 commons-fileupload commons-fileupload 1.3.2
2. 配置文件上傳bean
在spring mvc配置文件中增加一個文件上傳bean。
3.文件上傳
文件上傳是項目開發(fā)中最常見的功能。為了能上傳文件,必須將表單的method設(shè)置為POST,并將enctype設(shè)置為multipart/form-data。只有在這樣的情況下,瀏覽器才會把用戶選擇的文件以二進制數(shù)據(jù)發(fā)送給服務(wù)器。
上傳文件界面:upload_form.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>文件上傳
上傳結(jié)果返回界面:upload_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here 上傳結(jié)果為:${message}
注意:要提前創(chuàng)建好存儲文件的文件夾,比如我的路徑為:"D:staticResourcesTestimgupload"。
FileController.java
@Controller @RequestMapping("/SpringMVCDemo1") public class FileController { /** * 跳轉(zhuǎn)到上傳頁面 * @GetMapping 是一個組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫。 */ @GetMapping("/gotoUploadForm") public String index() { return "/upload_form.jsp"; } /** * 上傳單個文件 * 通過MultipartFile讀取文件信息,如果文件為空跳轉(zhuǎn)到結(jié)果頁并給出提示; * 如果不為空讀取文件流并寫入到指定目錄,最后將結(jié)果展示到頁面 * @param multipartFile * @PostMapping 是一個組合注解,是@RequestMapping(method = RequestMethod.POST)的縮寫。 */ @PostMapping("/upload") public String uploadSingleFile(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request){ if (multipartFile.isEmpty()){ request.setAttribute("message", "Please select a file to upload '"); return "/upload_result.jsp"; } try { String contentType = multipartFile.getContentType(); String originalFilename = multipartFile.getOriginalFilename(); byte[] bytes = multipartFile.getBytes(); System.out.println("上傳文件名為-->" + originalFilename); System.out.println("上傳文件類型為-->" + contentType); System.out.println("上傳文件大小為-->"+bytes.length); //filePath為存儲路徑 String filePath = "d:/staticResourcesTest"; System.out.println("filePath-->" + filePath); //存儲在staticResourcesTest下的imgupload文件夾下 File parentPath = new File(filePath, "imgupload"); System.out.println("上傳目的地為-->"+parentPath.getAbsolutePath()); try { File destFile = new File(parentPath,originalFilename);//上傳目的地 FileUtils.writeByteArrayToFile(destFile,multipartFile.getBytes()); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("message", "You successfully uploaded '" + multipartFile.getOriginalFilename() + "'"); } catch (IOException e) { e.printStackTrace(); } return "/upload_result.jsp"; } /** * 上傳多個文件,同時接受業(yè)務(wù)數(shù)據(jù) * @param origFiles * @param request * @param user * @return */ @PostMapping("/uploadMultiFiles") public String uploadMultiFiles(@RequestParam("file") ListorigFiles, HttpServletRequest request, User user) { //User為實體類 System.out.println("User=="+user); if (origFiles.isEmpty()) { request.setAttribute("message", "Please select a file to upload '"); return "/upload_result.jsp"; } try { for (MultipartFile origFile : origFiles) { String contentType = origFile.getContentType(); String fileName = origFile.getOriginalFilename(); byte[] bytes = origFile.getBytes(); System.out.println("上傳文件名為-->" + fileName); System.out.println("上傳文件類型為-->" + contentType); System.out.println("上傳文件大小為-->"+bytes.length); String filePath = "d:/staticResourcesTest"; System.out.println("上傳目的地為-->"+filePath); try { //上傳目的地(staticResourcesTest文件夾下) File destFile = new File(filePath,fileName); FileUtils.writeByteArrayToFile(destFile,origFile.getBytes()); } catch (Exception e) { e.printStackTrace(); } } request.setAttribute("message", "You successfully uploaded '"); } catch (IOException e) { e.printStackTrace(); } return "/upload_result.jsp"; } }
看完了這篇文章,相信你對SpringMVC如何實現(xiàn)文件上傳有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!