SpringBoot實現單文件與多文件上傳功能

1.單文件上傳

首先創建一個Spring Boot項目,並添加spring-boot-starter-web依賴

然後創建一個upload.jsp文件,做一個簡單的文件上傳頁面,具體代碼如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/wjsc/upload" method="post" enctype="multipart/form-data">
        <input type="file" value="請選擇文件" name="uploadFile">
        <input type="submit" value="點擊上傳">
    </form>
</body>
</html>

上傳接口是wjsc/upload,註意請求方法是postenctypemultipart/form-data

然後創建上傳文件接口:

@RequestMapping("/wjsc")
@RestController
public class UploadController {
    /**
     * 文件上傳
     */
    @PostMapping("/upload")
    //MultipartFile接受前臺傳過來的文件
    public String upload(MultipartFile uploadFile,HttpServletRequest req){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/");
        //設置上傳文件的保存路徑為項目運行目錄下的uploadFile文件夾
        String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
        //獲取當前日期對所上傳的文件進行歸類保存
        String format = sdf.format(new Date());
        File folder = new File(realPath+format);
        if (!folder.isDirectory()){//判斷是否為目錄
            folder.mkdirs();//不是目錄就創建目錄
        }
        //給上傳的文件重命名
        String oldName = uploadFile.getOriginalFilename();//獲取文件名稱
        String newName = UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf("."),oldName.length());//設置新文件名
        try{
            //文件保存操作
            uploadFile.transferTo(new File(folder,newName));
            //生成文件訪問路徑
            String filePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+format+newName;
            return filePath;
        }catch (Exception e){
            e.printStackTrace();
        }
        return "上傳失敗";
 
    }
}

註意:MultipartFile變量名命名要與jsp中上傳文件的name一致,不然會接收不到文件

最後測試:

運行項目,在瀏覽器中訪問upload.jsp頁面進行文件上傳

上傳成功後會返回文件訪問路徑,用這個路徑就可以訪問到剛剛上傳的圖片

 項目中也可以看到剛剛上傳的圖片成功瞭

至此,一個簡單的單文件上傳就完成瞭.

2.多文件上傳

多文件上傳和單文件上傳基本一致,首先修改jsp文件,代碼如下:

<

%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/wjsc/upload" method="post" enctype="multipart/form-data">
        <input type="file" value="請選擇文件" name="uploadFiles" multiple>
        <input type="submit" value="點擊上傳">
    </form>
</body>
</html>

然後修改上傳文件接口:

/**
     * 多文件上傳
     */
    @PostMapping("/uploads")
    public String uploads(MultipartFile[] uploadFiles,HttpServletRequest req) {
        //遍歷uploadFiles數組分別儲存
    }

 控制器裡邊的核心邏輯和單文件上傳是一樣的,隻是多一個遍歷的步驟。

到此這篇關於SpringBoot實現單文件與多文件上傳功能的文章就介紹到這瞭,更多相關SpringBoot實現文件上傳功能內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: