From 17867c568460a893d61228980ebbce2c832f7e25 Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Mon, 8 Mar 2021 17:14:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=80=A7=E8=83=BD=E6=B5=8B=E8=AF=95):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xml/reader/jmx/JmeterDocumentParser.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/io/metersphere/performance/parse/xml/reader/jmx/JmeterDocumentParser.java b/backend/src/main/java/io/metersphere/performance/parse/xml/reader/jmx/JmeterDocumentParser.java index 4a6c2a0998..13ffc9a34e 100644 --- a/backend/src/main/java/io/metersphere/performance/parse/xml/reader/jmx/JmeterDocumentParser.java +++ b/backend/src/main/java/io/metersphere/performance/parse/xml/reader/jmx/JmeterDocumentParser.java @@ -132,11 +132,44 @@ public class JmeterDocumentParser implements DocumentParser { } else if (nodeNameEquals(ele, CSV_DATA_SET)) { processCsvDataSet(ele); } + // 处理http上传的附件 + if (isHTTPFileArg(ele)) { + processArgumentFiles(ele); + } } } } } + private void processArgumentFiles(Element element) { + NodeList childNodes = element.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node item = childNodes.item(i); + if (item instanceof Element && nodeNameEquals(item, STRING_PROP)) { + String filenameTag = ((Element) item).getAttribute("name"); + if (StringUtils.equals(filenameTag, "File.path")) { + // 截取文件名 + handleFilename(item); + break; + } + } + } + } + + private void handleFilename(Node item) { + String separator = "/"; + String filename = item.getTextContent(); + if (!StringUtils.contains(filename, "/")) { + separator = "\\"; + } + filename = filename.substring(filename.lastIndexOf(separator) + 1); + item.setTextContent(filename); + } + + private boolean isHTTPFileArg(Element ele) { + return "HTTPFileArg".equals(ele.getAttribute("elementType")); + } + private void processCsvDataSet(Element element) { NodeList childNodes = element.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { @@ -145,13 +178,7 @@ public class JmeterDocumentParser implements DocumentParser { String filenameTag = ((Element) item).getAttribute("name"); if (StringUtils.equals(filenameTag, "filename")) { // 截取文件名 - String separator = "/"; - String filename = item.getTextContent(); - if (!StringUtils.contains(filename, "/")) { - separator = "\\"; - } - filename = filename.substring(filename.lastIndexOf(separator) + 1); - item.setTextContent(filename); + handleFilename(item); break; } }