天天看點

Spring MVC 簡單檔案上傳

服務端檔案上傳步驟

1、導入上傳坐标 commons-fileupload與 commons-io

<!--   檔案上傳坐标     -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>
           

2、spring-mvc.xml中配置檔案上傳解析器

<!--  上傳解析器  -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--    上傳檔案總大小    -->
        <property name="maxUploadSize" value="5242800"/>
        <!--    上傳單個檔案的大小    -->
        <property name="maxUploadSizePerFile" value="5242800"/>
        <!--    檔案編碼    -->
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
           

3、編寫檔案上傳代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>檔案上傳</title>
</head>
<body>
<div>
    <h3>單檔案上傳</h3>
    <form action="${pageContext.request.contextPath}/user/quick15" method="post" enctype="multipart/form-data">
        檔案名:<input type="text" name="username"/><br/>
        檔案:<input type="file" name="fileUpload"/> <br/>
        <input type="submit" value="送出"/>
    </form>
</div>
<div>
    <h3>多檔案上傳</h3>
    <form action="${pageContext.request.contextPath}/user/quick16" method="post" enctype="multipart/form-data">
        檔案名:<input type="text" name="username"/><br/>
        檔案1:<input type="file" name="fileUploads"/> <br/>
        檔案2: <input type="file" name="fileUploads"/> <br/>
        檔案3: <input type="file" name="fileUploads"/> <br/>
        檔案4: <input type="file" name="fileUploads"/> <br/>
        <input type="submit" value="送出"/>
    </form>
</div>

</body>
</html>
           
@RequestMapping(value = "/quick15", method = RequestMethod.POST)
    @ResponseBody
    public String Test15(String username, MultipartFile fileUpload) throws IOException {
        System.out.println("檔案名稱:" + username);
        String originalFilename = fileUpload.getOriginalFilename();
        // 儲存檔案到指定路徑
        fileUpload.transferTo(new File("G:\\Java\\" + originalFilename));
        System.out.println("上傳檔案的名稱:" + originalFilename);
        return originalFilename;
    }

    @RequestMapping(value = "/quick16", method = RequestMethod.POST)
    @ResponseBody
    public String Test16(String username, MultipartFile[] fileUploads) throws IOException {
        System.out.println("檔案名稱:" + username);
        for (MultipartFile file:
                fileUploads) {
            String originalFilename = file.getOriginalFilename();
             // 儲存檔案到指定路徑
            file.transferTo(new File("G:\\Java\\" + originalFilename));
            System.out.println("上傳檔案的名稱:" + originalFilename);
        }
        return username;
    }
           

用戶端檔案上傳要求

  1. 使用表單送出 指定表單項 type=“file”.
  2. 表單送出的方式必須采用 method=“POST”
  3. 表單的enctype(多部分/表單資料)屬性必須采用 enctype=“multipart/form-data”