spring boot 实现文件的上传下载

spring boot实现文件的上传,

我是使用maven搭建的spring boot项目,页面集成的jsp。
页面结构如下:
在这里插入图片描述
准备工作:在webapp下新建一个目录叫upload

1,页面,upload.jsp

<body>
<form method="post" action="${pageContext.request.contextPath}/file/upload" enctype="multipart/form-data">
    <input type="file" name="files">
    <input type="submit" value="上传">
</form>
</body>

2) 控制器 ,FileController.java

@Controller
@RequestMapping("/file")
public class FileController {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @RequestMapping("/upload")
    public String upLoad(MultipartFile files, HttpSession session) throws IOException {
        logger.info("upload 方法执行了");
        //获取上传文件的路径
        String realPath = session.getServletContext().getRealPath("upload");
        System.out.println("--------"+realPath);
        //获取上传的文件名,
        File file1 = new File(realPath, files.getOriginalFilename());
        //执行文件上传复制
        files.transferTo(file1);
        //跳到下载页面
        return "/download.jsp";

    }
}

3) 修改上传文件大小的限制,application.properties

//配置tomcat端口号
server.port=8080
//项目访问路径
server.servlet.context-path=/maven_springboot
//jsp页面热部署
server.servlet.jsp.init-parameters.development=true
//修改上传文件大小限制为10Mb
spring.servlet.multipart.max-file-size=10485760

2,下载

1) 页面 download.jsp
这里的fileName应该是要从数据库读取出来,包括上传也是应该把上传的文件信息存到数据库,这里我就不写了。
就直接把文件写死了,

<body>
<a href="${pageContext.request.contextPath}/file/download?fileName=aaa.png">下载</a>
</body>

2)控制器, FileController

 @RequestMapping("/download")
    public void Download(String fileName, HttpServletResponse response,HttpSession session) throws Exception {
   //设置下载响应头
        response.setHeader("content-disposition","attachment;fileName"+ URLEncoder.encode(fileName,"UTF-8"));
    //获取文件路径
        String uploadPath = session.getServletContext().getRealPath("upload");

        File file = new File(uploadPath,fileName);
        ServletOutputStream outputStream = response.getOutputStream();
        FileUtils.copyFile(file,response.getOutputStream());

    }

这里要用到一个jar包,commons-io包的FileUtils工具类,
pom引入该依赖如下:

 <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

如此,一个简单的上传下载demo就算完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清如许.

整理不易,点滴助力就是不竭动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值