SpringBoot文件上传下载
程序员文章站
2022-03-11 15:42:32
...
第一部分 文件上传
一、新建项目
二、配置maven
<?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>
三、SpringBoot配置文件application.properties
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会默认加载这个目录。
<!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>
五、controller
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 "上传失败!";
}
}
六、测试
1、浏览器中输入地址:http://localhost:6555/register.html
2、选择“选择文件”,“开始上传”
3、到D盘D:\test\test\目录下面查看
第二部分 文件下载
一、前端页面
<!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>
二、controller
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();
}
}
}
}
}
转载于:https://blog.51cto.com/doublelinux/2343275