导出模板功能实现

该代码示例展示了如何在Java控制器层通过枚举管理项目模板,根据输入的项目类型下载对应的模板文件。首先检查项目类型是否存在于枚举中,然后设置HTTP头信息进行文件下载,最后通过HTTP调用来获取并返回文件的字节流。
摘要由CSDN通过智能技术生成

controller层实现

 /**
     * 文件库模板下载
     * @param
     * @return
     * @throws UnsupportedEncodingException
     */
    @GetMapping("/downTemplate")
    @ResponseBody
    public ResponseEntity downTemplate(String projectItem) throws UnsupportedEncodingException {

        //根据枚举结果获取对应类型是否有模板文件
        if(!map.containsKey(projectItem)){
            //projectItem不在枚举中
            throw new RuntimeException("服务异常");
        }
        //文件名
        String fileName = map.get(projectItem);
        //设置HttpHeaders
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentDispositionFormData("attachment", URLEncoder.encode(fileName,"UTF-8"));
        httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        //拼接url
        String url = templateUrl + "/" + fileName;
        //http调用
        HttpResponse response = HttpRequest.get(url).setFollowRedirects(true).execute(false);
        //获取文件字节流
        byte[] bytes = response.bodyBytes();

        return new ResponseEntity(bytes, httpHeaders, HttpStatus.OK);
    }

其中templateUrl为:

 

map初始化代码:

  private static Map<String,String> map = new HashMap<>();


    @PostConstruct
    void init(){
        //初始化枚举中的模板数据到map中
        if(map.size() <= 0){
            for (ProjectTemplateEnum e : ProjectTemplateEnum.values()){
                map.put(e.getCode(),e.getTemplate());
            }
        }
    }

枚举类ProjectTemplateEnum为:

import lombok.Getter;

@Getter
public enum ProjectTemplateEnum {


    /**
     *十四五
     */
    SSW("1","十四五项目下载模板.xls"),
    BWYY("2","8511项目下载模板.xls"),
    JBE("3","982项目下载模板.xls"),
    YBA("4","已备案项目下载模板.xls"),
    ZXZ("5","专项债项目下载模板.xls"),
    SSZD("6","河南省重大项目下载模板.xls"),
    SSZD2("7","漯河市重大项目下载模板.xls"),
    SGYP("8","三个一批项目下载模板.xls"),
    SGWB("9","三个五百项目下载模板.xlsx"),
    GY("10","工业项目下载模板.xlsx"),
    BZ("11","倍增工程项目下载模板.xlsx"),
    SPMC("12","食品名城项目下载模板.xlsx"),
    SPMC2("13","食品名城项目下载模板.xlsx");



    private final String code;
    private final String template;

    ProjectTemplateEnum(String code,String template){
        this.code = code;
        this.template = template;
    }
}

根据url在D盘中新建文件夹,并将枚举类的下载模板放在文件夹中

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值