zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    各种计算
    C# 杂货
    Unity String格式化字符串
    unity 窗口化运行时取消边框
    WPF开机自启
    wpf 如何让当前窗口隐藏
    Unity 安卓杂货
    unity的一些杂货
    C# 项目中遇到过的坑(持续更新)
    C# 并入UI线程
  • 原文地址:https://www.cnblogs.com/zhima/p/9890312.html
Copyright © 2011-2022 走看看