程序员

Spring MVC中实现文件下载

2021-01-07  本文已影响0人  凡哥爱丽姐

    上一章我们讲过如何将文件上传,这一章我们将实现将上传的文件下载下来。

1、index.jsp和success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>上传文件</h2>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="photo"/>
    <input type="submit" name="上传">
</form>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: Mr Wei
  Date: 2020/6/5
  Time: 15:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
    <title>上传成功页面</title>
</head>
<body>
<a href="/download?filename=${fname}">下载</a>
<img src="/uploadFile/${fname}" width="200px" height="150px">
</body>
</html>

2、Controller实现类

@RequestMapping("/download")
    public ResponseEntity<byte[]> test(String filename, HttpServletRequest request) throws IOException{
        String serverpath= request.getRealPath("/uploadFile");
        //真实路径
        serverpath=serverpath+"/"+filename;
        //创建http头信息的对象
        HttpHeaders header=new HttpHeaders();
        //标记以流的方式做出响应
        header.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        //设置以弹窗的方式提示用户下载
       //attachment 表示以附件的形式响应给客户端
       // header.setContentDispositionFormData("attachment", URLEncoder.encode(filename,"utf-8"));
        File f=new File(serverpath);
        ResponseEntity<byte[]> resp=
                new ResponseEntity<byte[]>
                        (FileUtils.readFileToByteArray(f), header, HttpStatus.CREATED);
        return resp;
    }
上一篇下一篇

猜你喜欢

热点阅读