首页 > 其他分享 >模板下载

模板下载

时间:2022-08-30 17:58:03浏览次数:52  
标签:springframework 模板 org import new response 下载

package com.cango.erp.cs.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/templateFile")
@Slf4j
public class TemplateFileController {

    @Autowired
    ResourceLoader resourceLoader;

    /**
     * 模板名称Map key: 模板ID  value:模板名称
     */
    private static Map<String, String> templateName = new HashMap<>();

    static {
        // 外包案件分配导入模板
        templateName.put("1", "外包案件分配导入模板.xlsx");
    }

    @RequestMapping(value = "/download.do", method = RequestMethod.GET)
    public void declareInfoExport(HttpServletRequest request, HttpServletResponse response) throws Exception {
        final String templateId = request.getParameter("templateId");
        if (!templateName.containsKey(templateId)) {
            throw new RuntimeException("模板不存在");
        }
        // 文件名
        String filename = templateName.get(templateId);
        Resource resource = resourceLoader.getResource("classpath:/template/download/" + filename);
        try (InputStream inputStream = resource.getInputStream()) {
            response.setContentType("application/force-download");
            //保证下载时文件名为指定文件名,避免中文文件名乱码
            response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(filename, "utf-8"));
            ServletOutputStream outputStream = response.getOutputStream();
            byte[] b = new byte[2048];
            int len;
            //从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1
            while ((len = inputStream.read(b)) > 0) {
                outputStream.write(b, 0, len);
            }
        } catch (Exception e) {
            log.error("【CCS--文件下载】异常:{}", e);
            throw new RuntimeException("文件下载失败");
        }
    }
}

标签:springframework,模板,org,import,new,response,下载
From: https://www.cnblogs.com/lovedaodao/p/16640288.html

相关文章

  • C# net PDMan/CHINER/元数建模 生成SqlSugar 代码生成器模板
    C#netPDMan/CHINER/元数建模生成SqlSugar代码生成器模板C#netPDManCHINER元数建模生成SqlSugar代码生成器模板 在版本>=4.0.0版本中增加分类 代码生成器......
  • Django模板语法
    一、Python的模板:HTML代码+模板语法二、模板语法需掌握以下几个用法传值过滤器标签继承导入模板三、简要介绍1.模板语法之传值{{}}#一般给变量使用相关......
  • linux用wget下载的文件放在什么地方?
    linux用wget下载的文件放在什么地方?_百度知道 https://zhidao.baidu.com/question/1824525879028523548.html匿名用户2017-12-16 Linux系统中的wget是一个下载......
  • B/S端界面控件DevExtreme JavaScript—全新的UI模板库 (v22.2)
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能......
  • 推荐 10 套个人觉得还不错的网页模板
    原文链接 推荐10套个人觉得还不错的网页模板这里推荐10套从风格,配色,响应式等几方面个人觉得还不错的网页模板,假以时日用来做企业站,还是某种品牌的官网也好,觉得可......
  • Java开发环境的下载安装和卸载
    Java开发环境的下载安装和卸载Java开发环境之卸载JDK删除Java的安装目录删除JAVA_HOME删除path下关于Java的目录CMD输入java-version查看版本号(如果显示不是系统命......
  • JSP的文件上传和下载
    文件的上传和下载文件的上传和下载,是非常常见的功能。很多的系统中,或者软件中都经常使用文件的上传和下载。比如:微信头像,就使用了上传。邮箱中也有附件的上传和下载功能......
  • Day03下载配置java环境以及如何删除java文件
    卸载JDK删除java的安装目录删除JAVA_HOME删除path下关于java的目录java-version安装JDK百度搜索JDK8,找下载地址同意下载协议下载电脑对应版本......
  • 自动下载视频、弹幕、评论软件【python制作】
    前言嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~激不激动,开不开森!  今天我们来实现一个Python采集视频、弹幕、评论一体的小软件。平常咱们都是......
  • (Vue)前端获取头文件中的文件内容进行点击下载
    一、需求通过点击按钮下载后端接口头文件中的二进制流文件二、实现1、查看后台接口返回及头文件    这里可以通过content-disposition获取文件名,因......