SSM實現文件上傳


1、導入上傳需要的jar包

  • commons-fileupload-1.3.3.jar
  • commons-io-2.6.jar

2、創建 index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>上傳</title>
</head>
<body>

<h1>上傳圖片</h1>
<form action="/upload/saveUpload" method="post" enctype="multipart/form-data">
    圖片名稱:<input type="text" name="name"><br>
    圖片:<input type="file" name="multipartFile" multiple="multiple"><br>
    上傳者:<input type="text" name="uploader"><br>
    <input type="submit" value="上傳">
</form>

</body>
</html>

注意:

  • 1.form表單的 method 屬性設置為 post
  • 2.form表單的 enctype 屬性設置為 multipart/form-data
  • 3.提供 <input type="file" name="multipartFile">的文件上傳輸入框

3、在springmvc.xml文件中配置CommonsMultipartResolver文件解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--設置請求編碼格式,必須與JSP中的pageEncoding屬性一致-->
        <property name="defaultEncoding" value="UTF-8"/>
        <!--設置允許上傳文件的最大值(2MB),單位為字節-->
        <property name="maxUploadSize" value="2097152"/>
</bean>

4、編寫Controller層實現文件上傳

package com.itheima.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.UUID;


@Controller
@RequestMapping("/upload")
public class UploadController {

    /**
     * 文件上傳
     *
     * @param multipartFile
     * @param request
     */
    @RequestMapping("/saveUpload")
    public void saveUpload(MultipartFile multipartFile, HttpServletRequest request) {

        // 以當前日期創建一個文件夾,避免單個文件夾中文件過多
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        // 截取年月日:2020-11-02
        String substring = timestamp.toString().substring(0, 10);
        // 設置文件上傳存放的路徑
        String uploadPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload/" + substring);

        System.out.println("獲取到的圖片上傳地址為:" + uploadPath);
        // 獲取上傳文件名字
        String uploadName = multipartFile.getOriginalFilename();
        System.out.println("原始文件名:" + uploadName);
        // 利用UUID生成新的圖片名字,避免原圖片被覆蓋
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");

        // 截取上傳文件的后綴
        String suffix = uploadName.substring(uploadName.lastIndexOf("."));
        // 拼接新的文件名字
        String newUploadName = uuid + suffix;
        System.out.println("新的文件名:" + newUploadName);

        File dir = new File(uploadPath, newUploadName);
        // exists() 測試此抽象路徑名表示的文件或目錄是否存在。
        if (!dir.exists()) {
            dir.mkdirs();
        }
        //MultipartFile自帶的解析方法
        try {
            multipartFile.transferTo(dir);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

運行代碼,圖片會上傳到類路徑下的 \WEB-INF\upload 下,會以當前日期創建文件夾存儲圖片

博客地址:https://www.cnblogs.com/MavenHan/p/13917316.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM