SpringMVC文件上傳下載

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\..*"/>-->
        <!--&lt;!&ndash;<context:exclude-filter type="regex" expression=".+\.controller2\..*"/>&ndash;&gt;-->
    <!--</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";
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章