SpingMVC做文件下载

本文详细介绍如何在SpringMVC中实现文件下载功能,包括配置文件解析复杂表单类型、编写JSP页面和Controller,以及处理文件下载的具体步骤。

第一步设置配置文件让项目可以解析复杂表单类型

<!--复杂类型表单的解析器
    id:必须使用multipartResolver
    -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--以字节为单位-->
        <property name="maxUploadSize" value="999999999999999999"></property>
    </bean>

第二步编写jsp页面

   注意这儿的要传的实际参数fileName必须和controller里的
   参数列表形参名字一致
<c:forEach var="name" items="${listName}">
    <img src="${path}/upload/${name}" width="100" height="120"><br>
    <a href="download.do?fileName=${name}">点击下载&nbsp;&nbsp;${name}</a>
</c:forEach>

第三步controller编写

@Controller
@RequestMapping("/download")
public class DownloadController {
    @RequestMapping("/download.do")
    //这儿参数列表里的fileName必须和jsp页面实际要接收的一致
    public String download(String fileName, HttpServletRequest req, HttpServletResponse rep) throws IOException {
        //设置响应类型
        rep.setContentType("application/x-msdownload");
        //设置头信息
        rep.setHeader("Content-Disposition","attachment;filename="+fileName);
        //获取根路径
        String realPath = req.getSession().getServletContext().getRealPath("/");
        realPath=realPath+"/upload/";
        //文件下载
        Files.copy(Paths.get(realPath,fileName),rep.getOutputStream());
        return "success";
    }

    //获取文件下载列表
    @RequestMapping("/toDownload.do")
    public String toDownload(HttpServletRequest req, Model model) {
        String realPath = req.getSession().getServletContext().getRealPath("/");
        realPath=realPath+"/upload";
        File file = new File(realPath);
        List<String> listName=new ArrayList<>();
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File file1 : files) {
                String name = file1.getName();
                listName.add(name);
            }
        }
        //使用model将结果集返回到视图页面
        model.addAttribute("listName",listName);
        return "download";
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值