springmvc上傳

說下SpringMVC的上傳web

SpringMVC 中,文件的上傳,是經過 MultipartResolver 實現的。 因此,若是要實現文件的上傳,只要在 spring-mvc.xml 中註冊相應的 MultipartResolver 便可。spring

MultipartResolver 的實現類有兩個:spring-mvc

  1. CommonsMultipartResolver
  2. StandardServletMultipartResolver

兩個的區別:mvc

  1. 第一個須要使用 Apache 的 commons-fileupload 等 jar 包支持,但它能在比較舊的 servlet 版本中使用。
  2. 第二個不須要第三方 jar 包支持,它使用 servlet 內置的上傳功能,可是隻能在 Servlet 3 以上的版本使用。

首先要導入應該有依賴(或者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一致才行

相關文章
相關標籤/搜索