摘要:本文示例見這個項目的分支下的項目這個項目是為本文多帶帶建立的。的內置支持用于處理應用程序中的文件上傳。提供了一個的實現,使用了的和一些其他的東西,用于對的請求的解析。首先,創建一個帶有的表單,這樣用戶就可以通過這個表單上傳文件了。
??本文示例見這個項目的 upload 分支下的項目(這個項目是為本文多帶帶建立的)。
??WARNING:本文中有一部分直接把英文原文搬過來了,我的翻譯能力實在有限,湊合看吧。
??Spring 的內置 multipart 支持用于處理 Web 應用程序中的文件上傳。你可以通過使用插件化的MultipartResolver對象來啟用 multipart 支持,它定義在包org.springframework.web.multipart中。Spring 提供了一個MultipartResolver的實現,使用了 Apache 的 Commons FileUpload 和一些其他的東西,用于對 Servlet 3.0 的 multipart 請求的解析。
??默認地,Spring 不進行 multipart 處理,因為很多開發者想要自己處理。你可以通過在 Web 應用程序上下文中添加一個 multipart 解析器來啟用 Spring 的 multipart 處理。每一個請求都要被檢查,看看是否包含一個 multipart。如果沒有發現 multipart,請求就正常繼續啦;如果有的話,你在上下文中聲明的MultipartResolver就會開始工作啦。之后嘞,你就可以像訪問其他請求屬性那樣訪問 multipart 屬性啦。
和Servlet 3.0一起使用MultipartResolver??為了使用基于 multipart 解析(parse)的 Servlet 3.0,你可以在DispatcherServlet上加個標記,這個標記可以是 web.xml 中的一個“multipart-config”片段,也可以是一個在編程 Servlet注冊中的 MultipartConfigElement(or with a javax.servlet.MultipartConfigElement in programmatic Servlet registration),or in case of a custom Servlet class possibly with a javax.servlet.annotation.MultipartConfig annotation on your Servlet class。配置設置如文件最大長度或者存儲路徑需要應用在 Serlvet 注冊級別,因為 Servlet 3.0 不允許從MultipartResolver完成這些設置。
??一旦你通過上面的任意一種方式啟用了 Servlet 3.0 的 multipart解析,你需要添加StandardServletMultipartResolver`到你的 Spring 配置中:
配置 web.xml 文件
??這里使用
......在表單中處理文件上傳...... Spring MVC 核心 Servlet dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation 52428800 52428800 0 1
??在MultipartResolver完成自己的工作之后,你就可以像處理其他請求那樣處理當前請求了。首先,創建一個帶有的表單,這樣用戶就可以通過這個表單上傳文件了。為表單添加編碼屬性 (enctype="multipart/form-data") 來讓瀏覽器直到把表單編碼為 multipart 請求:
配置處理上傳文件的控制器Upload a file please Please upload a file
??在使用 Servlet 3.0 的 multipart 解析時,你也可以使用javax.servlet.http.Part來作為方法參數:
@Controller public class FileUploadController { @PostMapping("/form") public String handleFormUpload( @RequestParam("name") String name, @RequestParam("file") Part file) { InputStream inputStream = file.getInputStream(); // store bytes from uploaded file somewhere return "redirect:uploadSuccess"; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65259.html
摘要:依賴于對請求的支持。使用解析兼容的沒有構造器參數,也沒有要設置的參數,這樣,在應用上下文中,將其聲明為就會非常簡單。默認是沒有限制的整個請求的容量。 Spring MVC 高級的技術 本章內容: Spring MVC配置的替代方案 處理文件上傳 在控制器中處理異常 使用flash屬性 稍等還沒結束 說明 如果你有幸能看到。后面的章節暫時不更新了,改變學習方式了。重要理解思想,這本書...
摘要:于是提供了機制,使得從中讀往里寫變成異步動作。這是因為客戶端的數據推送速度太慢了,容器先將收回,當容器發現可以讀取到新數據的時候,再分配一個去讀,如此循環直到全部讀完為止。注意和不能同時使用。 Github地址 相關系列文章: Servlet 3.0 異步處理詳解 Spring MVC異步處理的幾種方式 Servlet Async Processing提供了一種異步請求處理的手段(...
摘要:項目拋出了個異常,。所以我們需要添加個轉換器類這樣就能夠識別了總結感覺把文件上傳所能遇到的坑全踩了個變,心累。 pom包的配置 org.springframework.boot spring-boot-starter-web 啟動項類修改 /** * 防止文件大于10M時Tomcat連接重置 * * @return */ @Bean public T...
摘要:在中,就是前端控制器的任務是將請求發送給控制器。處理器映射會根據請求所攜帶的信息來進行決策一旦選擇了合適的控制器,會將請求發送給選中的控制器。這些信息被稱為模型。因此無需在配置類中顯式聲明任何的控制器具體來講是試圖解析器。 Spring MVC基于模型-視圖-控制器(Model-View-Controller,MVC)模式實現,能夠構建像Spring框架那樣靈活和松耦合的Web應用程序...
閱讀 2284·2023-04-25 16:42
閱讀 1198·2021-11-22 14:45
閱讀 2329·2021-10-19 13:10
閱讀 2821·2021-09-29 09:34
閱讀 3398·2021-09-23 11:21
閱讀 2094·2021-08-12 13:25
閱讀 2176·2021-07-30 15:15
閱讀 3488·2019-08-30 15:54