• Rest 下载文件接口 httpclient调用方法


    下载文件被调用接口:

    @PostMapping("/download")
    @Transactional
    public ResponseEntity<byte[]> downloadFile(@Valid @RequestBody XXXVo vo) throws IOException {
     
    if(null==vo){
    return new ResponseEntity<byte[]>(HttpStatus.BAD_REQUEST);
    }
    String path = ResourceUtils.CLASSPATH_URL_PREFIX + "templates/";
    String fileName = "temp.xls";
    File file = ResourceUtils.getFile(path + fileName);
    FileInputStream in = new FileInputStream(file);
    HSSFWorkbook workbook = new HSSFWorkbook(in);
    byte[] fileArray = null;
    try {
    fixedWorkbook(workbook, vo);
    fileArray = readWorkbookStream(workbook);
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    IOUtil.close(workbook, in);
    }

    return new ResponseEntity<byte[]>(fileArray, HttpStatus.OK);
    }

    public static byte[] readWorkbookStream(HSSFWorkbook wb) throws IOException{
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    wb.write(out);
    close(wb, out);
    return out.toByteArray();
    }

     下载文件调用方法:

     
    @SuppressWarnings("unchecked")
    public Map<String, Object> downloadFile(Map<String, Object> params,HttpServletRequest request,HttpServletResponse response) throws ParseException, UnsupportedEncodingException {

    String url=“http://127.0.0.1:9080/download”;
    byte[] buffer = new byte[1024];
    int len = -1;
    CloseableHttpClient httpClient = HttpClients.createDefault();
    String jsonMap = comnSvc.mapToString(paramMap);
    HttpPost httpPost = new HttpPost(url);
    httpPost.addHeader("Content-type","application/json; charset=utf-8");
    httpPost.setHeader("Accept", "application/json");
    httpPost.setEntity(new StringEntity(jsonMap,"UTF-8"));
    try (CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
    InputStream input = httpResponse.getEntity().getContent();
    OutputStream output = response.getOutputStream();) {

    String tt= System.currentTimeMillis()+ ".xls";
    String header = "attachment;filename="+ tt;
    response.setHeader("Content-disposition", header);
    response.setContentType("application/vnd.ms-excel;charset=UTF-8");//xls 文件;xml 为"text/xml; charset=UTF-8" 

    while((len=input.read(buffer))!=-1){
    output.write(buffer, 0, len);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return null;
    }

    转载请注明地址:https://www.cnblogs.com/zhima/p/9890312.html

  • 相关阅读:
    设计模式之单例模式
    SpringBoot与mongodb的结合
    Spring boot整合Swagger
    阿里巴巴规约没有注意的点
    利用Maven插件将依赖包、jar/war包及配置文件输出到指定目录
    Spring注解开发-全面解析常用注解使用方法之生命周期
    描述 Vue 组件生命周期(有父子组件的情况)
    vue单页面,多路由,前进刷新,后退不刷新
    element ui el-upload上传组件时session丢失问题
    实现uni-app 通讯录按照字母排序 的pinyin.js
  • 原文地址:https://www.cnblogs.com/zhima/p/9890312.html
Copyright © 2020-2023  润新知