說下SpringMVC的上傳web
SpringMVC 中,文件的上傳,是經過 MultipartResolver 實現的。 因此,若是要實現文件的上傳,只要在 spring-mvc.xml 中註冊相應的 MultipartResolver 便可。spring
MultipartResolver 的實現類有兩個:spring-mvc
兩個的區別:mvc
首先要導入應該有依賴(或者jar包)app
在maven中導入的依賴則看上去簡易不少maven
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.16.RELEASE</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> </dependencies>
導入jar包或者依賴後,就能夠開始寫個上傳的表單了post
<form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上傳" /> </form>
注意 這裏的請求方法必須是post請求this
也必須寫上enctype=「multipart/form-data」,這表示上傳的將會是二進制流的格式,以規定的二進制進行上傳spa
只有設置成這個上傳格式,才能上傳成功code
而後須要寫個springmvc的配置文件
<!-- 開啓掃描 --> <context:component-scan base-package="com.liy.controller" /> <!-- 開啓mvc註解 --> <mvc:annotation-driven /> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver" > <!-- 設置上傳文件信息參數 --> <!-- 設置文件上傳的最大尺寸 --> <property name="maxUploadSize"> <value>5242880</value> </property> </bean> <!-- 配置文件的容許訪問靜態資源 --> <mvc:resources location="/**" mapping="/" />
這裏CommonsMultipartResolver 類的id必須爲「multipartResolver「
這個bean的id是固定的,當DispatcherServlet查找multipart解析器時,會查找id爲multipartResolver的Bean。若定義的bean 的id 不是multipartResolver,DispatcherServlet會對它進行忽略。
@SuppressWarnings("serial") public class DispatcherServlet extends FrameworkServlet { /** Well-known name for the MultipartResolver object in the bean factory for this namespace. */ public static final String MULTIPART_RESOLVER_BEAN_NAME = "multipartResolver";
controller在接收處理下
@RequestMapping("/upload") @ResponseBody public void upload(String name,String address,MultipartFile file) throws IllegalStateException, IOException{ System.out.println(name+"--"+address+"--"+file.getOriginalFilename()); file.transferTo(new File("d:/img/imgs/"+file.getOriginalFilename())); }
這裏的MultiparFile參數的名字必須和
<input type="file" name="file" />
這裏的name一致才行