diff --git a/y9-module-jodconverter/risenet-y9boot-webapp-jodconverter/src/main/java/net/risesoft/service/cache/impl/CacheServiceRocksDBImpl.java b/y9-module-jodconverter/risenet-y9boot-webapp-jodconverter/src/main/java/net/risesoft/service/cache/impl/CacheServiceRocksDBImpl.java index d7f600ba0..81a73dea6 100644 --- a/y9-module-jodconverter/risenet-y9boot-webapp-jodconverter/src/main/java/net/risesoft/service/cache/impl/CacheServiceRocksDBImpl.java +++ b/y9-module-jodconverter/risenet-y9boot-webapp-jodconverter/src/main/java/net/risesoft/service/cache/impl/CacheServiceRocksDBImpl.java @@ -261,7 +261,8 @@ private byte[] toByteArray(Object obj) throws IOException { private Object toObject(byte[] bytes) throws IOException, ClassNotFoundException { Object obj; ByteArrayInputStream bis = new ByteArrayInputStream(bytes); - ObjectInputStream ois = new ObjectInputStream(bis); + ValidatingObjectInputStream ois = new ValidatingObjectInputStream(bis); { + ois.accept(LinkedList.class, LogMutation.class, HashMap.class, String.class); obj = ois.readObject(); ois.close(); bis.close(); diff --git a/y9-module-processadmin/risenet-y9boot-webapp-processadmin/src/main/java/net/risesoft/controller/ProcessModelVueController.java b/y9-module-processadmin/risenet-y9boot-webapp-processadmin/src/main/java/net/risesoft/controller/ProcessModelVueController.java index aa0dce535..c4084c086 100644 --- a/y9-module-processadmin/risenet-y9boot-webapp-processadmin/src/main/java/net/risesoft/controller/ProcessModelVueController.java +++ b/y9-module-processadmin/risenet-y9boot-webapp-processadmin/src/main/java/net/risesoft/controller/ProcessModelVueController.java @@ -156,13 +156,22 @@ public Y9Result deployModel(@RequestParam @NotBlank String modelId) { public void exportModel(@RequestParam @NotBlank String modelId, HttpServletResponse response) { try { Model model = modelService.getModel(modelId); + if (model == null) { + response.sendError(HttpServletResponse.SC_NOT_FOUND, "Model not found"); + return; + } + byte[] bpmnBytes = modelService.getBpmnXML(model); - ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes); String filename = model.getKey() + ".bpmn20.xml"; - response.setHeader("Content-Disposition", "attachment; filename=" + filename); - IOUtils.copy(in, response.getOutputStream()); - response.flushBuffer(); + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8")); + + try (ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes)) { + IOUtils.copy(in, response.getOutputStream()); + response.flushBuffer(); + } } catch (Exception e) { LOGGER.error("导出模型失败,modelId:{} 异常:{}", modelId, e.getMessage()); }