<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>qiu</groupId> <artifactId>fileupload</artifactId> <version>0.0.1-SNAPSHOT</version> <name>fileupload</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
server.port=6555 # 上傳文件總的最大值 spring.servlet.multipart.max-request-size=10MB # 單個文件的最大值 spring.servlet.multipart.max-file-size=10MB ## jsp #spring.mvc.view.prefix=/WEB-INF/jsp/ #spring.mvc.view.suffix=.jsp spring.mvc.static-path-pattern=/**
前端頁面放於resources目錄下面的public目錄中,springboot會默認加載這個目錄。html
<!DOCTYPE html> <html> <head> <meta http-equiv=」Content-Type」 content=」text/html; charset=utf-8″> <title>文件上傳</title> <style> form{padding:20px 15px 15px 120px;} form{width:500px;height:300px;} form fieldset{border:0;align:center;} form label{display:inline-block;width:70px;text-align:right} input{width:240px;height:30px;} #submit{width:200px;height:35px;position:relative;left:70px;} #submit:hover{cursor: pointer;background:#D8D8D8;} body{width:100%;height:100%;background-image: url(img/1.jpg);} #box{position:fixed;left:0px;right:0px;width:706px;margin-left:auto;margin-right:auto;top:100px;} #code{width: 70px;height: 40px;font-size:18px;} #captcha_img{position:relative;bottom:-15px;} a{position:relative;bottom:-10px;} </style> </head> <body > <div id="box"> <form method="post" action="upload" enctype="multipart/form-data" style="background:#cccccc;border-radius:25px;"> <fieldset> <div style="margin-left: 120px;font-size: 30px;font-family:STXingkai;"> 文件上傳 </div> <!-- <p> <label>用戶名:</label> <input type="text"name="username"placeholder="用戶名"required="required"/> </p> <p> <label>密碼:</label> <input type="password"name="password"placeholder="密碼"required="required"/> </p> --> <p> <label>選擇文件:</label> <input type="file" name="file"> </p> <p> <label>保存路徑:</label> <input type="text" name="path" id="path" value="L:\"/> </p> <p> <input type="submit" value="開始上傳" name="submit" id="submit"/> </p> </fieldset> </form> </div> </body> </html>
package qiu.fileupload.test; 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.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; @Controller public class GetFile { @GetMapping("/upload") public String upload() { return "upload"; } @PostMapping("/upload") @ResponseBody public String upload(@RequestParam("file") MultipartFile file,@RequestParam("path") String path) { if (file.isEmpty()) { return "上傳失敗,請選擇文件"; } System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaa"); String fileName = file.getOriginalFilename(); String filePath = path; System.out.println(filePath); File dest = new File(filePath + fileName); try { file.transferTo(dest); return "上傳成功"; } catch (IOException e) { } return "上傳失敗!"; } }
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>文件下載</title> </head> <body > <h2>文件下載列表</h2> <hr/> <div style="background-color: #F8F8FF;width: 900px;height: 800px;margin: auto; border: solid 2px blue;"> <div style="width: 700px;height: 600px;margin: auto;"> <br><br><br> 下載:  <a href="/MyProject/testDownload1">1.png</a> <br> 下載:  <a href="/MyProject/testDownload2">Android經常使用英語.docx</a><br> 下載:  <a href="/MyProject/testDownload3">Git-2.17.0-64-bit.exe</a><br> 下載:  <a href="/MyProject/testDownload4">MyBatis源代碼.zip</a><br> </div> </div> </body> </html>
package qiu.fileupload.test; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.*; @Controller public class DownloadFile { @RequestMapping(value = "/testDownload1", method = RequestMethod.GET) public void Download1(HttpServletResponse res) { String fileName = "1.png"; res.setHeader("content-type", "application/octet-stream"); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment;filename=" + fileName); byte[] buff = new byte[1024]; BufferedInputStream bis = null; OutputStream os = null; try { os = res.getOutputStream(); bis = new BufferedInputStream(new FileInputStream(new File("L://test//" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, buff.length); os.flush(); i = bis.read(buff); } } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } } @RequestMapping(value = "/testDownload2", method = RequestMethod.GET) public void Download2(HttpServletResponse res) { String fileName = "Android經常使用英語.docx"; res.setHeader("content-type", "application/octet-stream"); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment;filename=" + fileName); byte[] buff = new byte[1024]; BufferedInputStream bis = null; OutputStream os = null; try { os = res.getOutputStream(); bis = new BufferedInputStream(new FileInputStream(new File("L://test//" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, buff.length); os.flush(); i = bis.read(buff); } } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } } @RequestMapping(value = "/testDownload3", method = RequestMethod.GET) public void Download3(HttpServletResponse res) { String fileName = "Git-2.17.0-64-bit.exe"; res.setHeader("content-type", "application/octet-stream"); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment;filename=" + fileName); byte[] buff = new byte[1024]; BufferedInputStream bis = null; OutputStream os = null; try { os = res.getOutputStream(); bis = new BufferedInputStream(new FileInputStream(new File("L://test//" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, buff.length); os.flush(); i = bis.read(buff); } } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } } @RequestMapping(value = "/testDownload4", method = RequestMethod.GET) public void Download4(HttpServletResponse res) { String fileName = "MyBatis源代碼.zip"; res.setHeader("content-type", "application/octet-stream"); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment;filename=" + fileName); byte[] buff = new byte[1024]; BufferedInputStream bis = null; OutputStream os = null; try { os = res.getOutputStream(); bis = new BufferedInputStream(new FileInputStream(new File("L://test//" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, buff.length); os.flush(); i = bis.read(buff); } } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }