vue前端代码

<a-button type="primary" style="margin-left: 50px" @click="exportConfigures()">导出配置文件</a-button>
exportConfigures(){
      if (this.selectedRows.length==0) {
        alert("请至少选择一条数据");
        return
      }else if(this.selectedRows.length>1){
        alert("只能选择一条数据");
        return
      }
      const arr =[];
      console.log(this.selectedRows);
      this.selectedRows.forEach(p=>{
        arr.push(p.id);
      });
      axios({
        url:'http://localhost:8000/ConfiguresInfo/Configures/exportFigure',
        method:'post',
        data:arr,
        headers:{'Content-Type':'application/json'},
        responseType: 'blob'
      }).then(
        response => {
          const link = document.createElement('a');
          console.log('请求成功了', response.data);
          let blob=new Blob([response.data.data], {
            type: "application/xml;charset=utf-8"
          });
          link.style.display='none';
          // 兼容不同浏览器的URL对象
          const url = window.URL || window.webkitURL || window.moxURL;
          link.href=url.createObjectURL(blob);
          console.log(this.selectedRows[0].name);
          link.setAttribute('download',this.selectedRows[0].name+'.xml');
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);
          url.revokeObjectURL(link.href);//销毁url对象
        }
      )
    }

springboot后端代码

@ApiOperation(value = "导出文件",produces = "application/octet-stream")
    @PostMapping("/exportFigure")
    public ResponseEntity<byte[]> exportConfigure(@RequestBody List<Integer> arr, HttpServletResponse response) throws Exception {
        HashMap map = new HashMap();
        arr.forEach(p-> System.out.println("p = " + p));
        List<ConfiguresEntiry> configuresEntiries = configureService.listByIds(arr);
        ConfiguresEntiry configuresEntiry = configuresEntiries.get(0);
        if (CollectionUtils.isNotEmpty(configuresEntiries)) {
                List<Troops> troops = JSON.parseArray(configuresEntiry.getTroops(), Troops.class);
                configuresEntiry.setArr(troops);
                DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
                // 创建XML文档对象
                Document doc = docBuilder.newDocument();
                org.w3c.dom.Element rootElement = doc.createElement("Units");
                doc.appendChild(rootElement);
                // 创建UnitInfo元素
                Element unitInfo = doc.createElement("UnitInfo");
                rootElement.appendChild(unitInfo);
                for (Troops troops1 : configuresEntiry.getArr()) {
                    Element unit = doc.createElement("Unit");
                    unit.setAttribute("name", troops1.getUnitname());
                    // 设置其他属性
                    unit.setAttribute("iconDir", troops1.getIcon());
                    unit.setAttribute("type", troops1.getType());
                    unit.setAttribute("step", troops1.getNumber().toString());
                    unit.setAttribute("dllName", troops1.getConnect());
                    //unit.setAttribute("camp", attributes[i][3]);
                    // 非所有单位都有range属性,只给有range的单位设置
                    if (StringUtils.isNotBlank(String.valueOf(troops1.getRange()))) {
                        unit.setAttribute("range", String.valueOf(troops1.getRange()));
                    }
                    unitInfo.appendChild(unit);
                }
                // 将XML文档写入文件或输出流(这里仅做字符串格式化输出)
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                DOMSource source = new DOMSource(doc);
                StringWriter writer = new StringWriter();
                File file = new File("D:\\"+configuresEntiry.getName()+".xml");
                StreamResult result = new StreamResult(file);
                transformer.transform(source, result);
                writer.close();
        }
        File file = new File("D:\\"+configuresEntiry.getName()+".xml");
        String name = file.getName();
        FileInputStream fileInputStream = new FileInputStream(file);
        byte[] bytes = new byte[(int) file.length()];
        fileInputStream.read(bytes);
        fileInputStream.close();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", name = java.net.URLEncoder.encode(file.getName(), "UTF-8"));
        ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(Files.toByteArray(file), headers, HttpStatus.CREATED);
        return  responseEntity;
    }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐