1. 程式人生 > 程式設計 >SpringBoot實現單檔案上傳

SpringBoot實現單檔案上傳

SpringBoot實現單檔案上傳功能,供大家參考,具體內容如下

架構為springboot+thymeleaf,採用ajax方式提交

1. 頁面testFile.html

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>測試檔案上傳</title>
 
 <script src="../static/jquery/jquery-2.1.1.min.js" th:src="@{/jquery/jquery-2.1.1.min.js}"></script>
  
  <script type="text/javascript">
  $(function () {
    $("#upload1").click(function () {
      var formData = new FormData();
      formData.append("file",document.getElementById("file").files[0]);  
      $.ajax({
        url: "/file/upload1",type: "POST",data: formData,//必須false才會自動加上正確的Content-Type
        contentType: false,//必須false才會避開jquery對 formdata 的預設處理
        //XMLHttpRequest會對 formdata 進行正確的處理
        processData: false,success: function (data) {
          if (data.status == "true") {
            alert("上傳成功!");
          }
          if (data.status == "error") {
            alert(data.msg);
          }
        },error: function () {
          alert("上傳失敗!");
        }
      });
    });
  });
  </script>
</head>
<body>
 
  <form method="POST" enctype="multipart/form-data" action="/file/upload1">
   <fieldset>
     <legend>單一檔案上傳例項:</legend>
       檔案1:<input type="file" name="file" id="file"/><br/>
      
      <input type="button" id="upload1" value="上傳"/><br/>
    </fieldset>
  </form>

</body>
</html>

2. FileController.java

package com.stormkai.controller;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import lombok.extern.slf4j.Slf4j;

@Controller
@RequestMapping("/file")
@Slf4j
public class FileController {
 
 @GetMapping("/index")
 public String index() {
 return "testFile";
 }
 
 @PostMapping("/upload1")
  @ResponseBody
  public Map<String,Object> upload1(@RequestParam("file") MultipartFile file,HttpServletRequest request) throws IOException {
    
    log.info("系統路徑={}",request.getSession().getServletContext().getRealPath(""));
    String path = "F:\\uploadfile\\";
    if(!new File(path).exists()){
     new File(path).mkdirs();
 }
    file.transferTo(new File(path + file.getOriginalFilename()));
    Map<String,Object> result = new HashMap<>();
    result.put("status","true");
    result.put("data",null);
    return result;
  }

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。