1、引pom.xml依賴
<!--springMVC文件上傳下載-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${fileupload.version}</version>
</dependency>
2、在springmvc-servlet.xml配置文件上傳解析器(CommonsMultipartResolver)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 通過context:component-scan元素掃描指定包下的控制器-->
<!--1) 掃描com.zking.zf及子子孫孫包下的控制器(掃描範圍過大,耗時)-->
<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.zking.ssm"/>
<!--1) use-dafault-filters="false"的情況下,根據表達式包含(include-filter)或排除(exclude-filter)指定包-->
<!--<context:component-scan base-package="com.zking.ssm" use-default-filters="false">-->
<!--<context:include-filter type="regex" expression=".+\.controller\..*"/>-->
<!--<!–<context:exclude-filter type="regex" expression=".+\.controller2\..*"/>–>-->
<!--</context:component-scan>-->
<!--2) 此標籤默認註冊DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
<!--兩個bean,這兩個bean是spring MVC爲@Controllers分發請求所必須的。並提供了數據綁定支持,-->
<!--@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,讀寫XML的支持(JAXB),讀寫JSON的支持(Jackson)-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--3) ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- viewClass需要在pom中引入兩個包:standard.jar and jstl.jar -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--4) 單獨處理圖片、樣式、js等資源 -->
<!--<mvc:resources location="/css/" mapping="/css/**"/>-->
<!--<mvc:resources location="/images/" mapping="/images/**"/>-->
<!--<mvc:resources location="/js/" mapping="/js/**"/>-->
<mvc:resources location="/static/" mapping="/static/**"/>
<!--文件上傳下載-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 必須和用戶JSP 的pageEncoding屬性一致,以便正確解析表單的內容 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 文件最大大小(字節) 1024*1024*50=50M-->
<property name="maxUploadSize" value="52428800"></property>
<!--resolveLazily屬性啓用是爲了推遲文件解析,以便捕獲文件大小異常-->
<property name="resolveLazily" value="true"/>
</bean>
</beans>
3、 表單提交方式爲method="post" enctype="multipart/form-data"
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
4.1文件項用spring提供的MultipartFile進行接收
4.2 IO流讀寫文件
4.3 保存文件上傳記錄
/**
* d://temp/:爲你保存的路徑
* file.getOriginalFilename(): 文件名
* @param request
* @param file
* @param hBook
* @return
*/
@Controller
public class UploadController {
@RequestMapping("/upload")
public String upload(HttpServletRequest request, MultipartFile file, HBook hBook){
try {
FileUtils.copyInputStreamToFile(file.getInputStream(),new File("d://temp/"+file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
return "hello";
}
}