spring mvc 文件下载

Posted liouzeshuen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring mvc 文件下载相关的知识,希望对你有一定的参考价值。

 /**前台传过来一个文件名*/
    @RequestMapping("/download")
    public ResponseEntity<Resource> export(@RequestParam("strZipPath") String strZipPath) throws IOException {

        //filepath 为视频的的路径
        //strZipPath 为视频的名字
        return download(new File(filepath + "//" + strZipPath));
    }
/**
     * 下载文件
     * @param file 文件
     */
    protected ResponseEntity<Resource> download(File file) {
        String fileName = file.getName();
        return download(file, fileName);
    }
    
    /**
     * 下载
     * @param file 文件
     * @param fileName 生成的文件名
     * @return {ResponseEntity}
     */
    protected ResponseEntity<Resource> download(File file, String fileName) {
        Resource resource = new FileSystemResource(file);
        
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();
        String header = request.getHeader("User-Agent");
        // 避免空指针
        header = header == null ? "" : header.toUpperCase();
        HttpStatus status;
        if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
            fileName = URLUtils.encodeURL(fileName, Charsets.UTF_8);
            status = HttpStatus.OK;
        } else {
            fileName = new String(fileName.getBytes(Charsets.UTF_8), Charsets.ISO_8859_1);
            status = HttpStatus.CREATED;
        }
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", fileName);
        return new ResponseEntity<Resource>(resource, headers, status);
    }

 文件下载最好用form表单提交,不要用ajax 提交,因为ajax处理起来很麻烦,如果你想用ajax 可以参考

https://my.oschina.net/watcher/blog/1525962

ps:后台代码都是一样的,就是前台改一下

以上是关于spring mvc 文件下载的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net MVC 代码片段问题中的 Jqgrid 实现

spring 国际化 js怎么设置

如果你的同事这样使用Spring MVC,你该怎么办 ?

spring mvc配置文件出现红叉

java代码spring-mvc模式怎样实现从后台直接定时发送邮件

通过 Spring MVC 框架包含其他 JSP 是个好主意吗?