skyouc
2024-12-21 c635d78b479510ebe2556a420948effcd30a0731
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/WebkitParseUtils.java
@@ -1,96 +1,96 @@
package com.zy.asrs.wms.utils;
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
public class WebkitParseUtils {
    private static final Pattern BOUNDARY_PATTERN = Pattern.compile("--WebKitFormBoundary([A-Za-z0-9+/]+)");
    private static final Pattern NAME_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"([^\"]+)\"");
    private static final Pattern VALUE_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"[^\"]+\"\\s*\\n\\s*\\n\\s*([^\\n]+)");
    // 解析WebKitFormBoundary字符串数据
    public static String parseBoundary(String input) {
        Matcher matcher = BOUNDARY_PATTERN.matcher(input);
        if (matcher.find()) {
            return matcher.group(1); // 返回捕获的字符串
        }
        return null; // 如果没有匹配,则返回null
    }
    // 解析所有name的值
    public static List<String> parseNames(String input) {
        List<String> names = new ArrayList<>();
        Matcher matcher = NAME_PATTERN.matcher(input);
        while (matcher.find()) {
            names.add(matcher.group(1)); // 添加捕获到的name值到列表
        }
        return names; // 返回所有匹配到的name值
    }
    // 解析所有值部分
    public static List<String> parseValues(String input) {
        List<String> values = new ArrayList<>();
        Matcher matcher = VALUE_PATTERN.matcher(input);
        while (matcher.find()) {
            String trim = matcher.group(1).trim();
            Matcher matcher2 = BOUNDARY_PATTERN.matcher(trim);
            if(matcher2.find()) {
                trim = "";
            }
            values.add(trim); // 添加捕获到的值到列表,并去掉前后的空白
        }
        return values; // 返回所有匹配到的值
    }
    public static HashMap<String, Object> getFormData(String input) {
//        // 解析WebKitFormBoundary字符串
//        String boundary = parseBoundary(input);
//        System.out.println("解析出的WebKitFormBoundary字符串是: " + boundary);
        // 解析所有name的值
        List<String> nameValues = parseNames(input);
//        System.out.println("解析出的所有name值是: " + nameValues);
        // 解析所有值
        List<String> values = parseValues(input);
//        System.out.println("解析出的所有值是: " + values);
        HashMap<String, Object> map = new HashMap<>();
        for (int i = 0; i < nameValues.size(); i++) {
            String key = nameValues.get(i);
            // 确保即使值为空也能正常存入map
            String value = i < values.size() ? values.get(i) : "";
            map.put(key, value);
        }
//        System.out.println(JSON.toJSONString(map));
        return map;
    }
    public static void main(String[] args) {
        String input = "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
                "Content-Disposition: form-data; name=\"locNo\"\n" +
                "\n" +
                "1\n" +
                "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
                "Content-Disposition: form-data; name=\"test\"\n" +
                "\n" +
                "123\n" +
                "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
                "Content-Disposition: form-data; name=\"quer\"\n" +
                "\n" +
                "111\n" +
                "------WebKitFormBoundarySOfEJLg0rR0hf3mm--";
        getFormData(input);
    }
}
package com.zy.asrs.wms.utils;
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
public class WebkitParseUtils {
    private static final Pattern BOUNDARY_PATTERN = Pattern.compile("--WebKitFormBoundary([A-Za-z0-9+/]+)");
    private static final Pattern NAME_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"([^\"]+)\"");
    private static final Pattern VALUE_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"[^\"]+\"\\s*\\n\\s*\\n\\s*([^\\n]+)");
    // 解析WebKitFormBoundary字符串数据
    public static String parseBoundary(String input) {
        Matcher matcher = BOUNDARY_PATTERN.matcher(input);
        if (matcher.find()) {
            return matcher.group(1); // 返回捕获的字符串
        }
        return null; // 如果没有匹配,则返回null
    }
    // 解析所有name的值
    public static List<String> parseNames(String input) {
        List<String> names = new ArrayList<>();
        Matcher matcher = NAME_PATTERN.matcher(input);
        while (matcher.find()) {
            names.add(matcher.group(1)); // 添加捕获到的name值到列表
        }
        return names; // 返回所有匹配到的name值
    }
    // 解析所有值部分
    public static List<String> parseValues(String input) {
        List<String> values = new ArrayList<>();
        Matcher matcher = VALUE_PATTERN.matcher(input);
        while (matcher.find()) {
            String trim = matcher.group(1).trim();
            Matcher matcher2 = BOUNDARY_PATTERN.matcher(trim);
            if(matcher2.find()) {
                trim = "";
            }
            values.add(trim); // 添加捕获到的值到列表,并去掉前后的空白
        }
        return values; // 返回所有匹配到的值
    }
    public static HashMap<String, Object> getFormData(String input) {
//        // 解析WebKitFormBoundary字符串
//        String boundary = parseBoundary(input);
//        System.out.println("解析出的WebKitFormBoundary字符串是: " + boundary);
        // 解析所有name的值
        List<String> nameValues = parseNames(input);
//        System.out.println("解析出的所有name值是: " + nameValues);
        // 解析所有值
        List<String> values = parseValues(input);
//        System.out.println("解析出的所有值是: " + values);
        HashMap<String, Object> map = new HashMap<>();
        for (int i = 0; i < nameValues.size(); i++) {
            String key = nameValues.get(i);
            // 确保即使值为空也能正常存入map
            String value = i < values.size() ? values.get(i) : "";
            map.put(key, value);
        }
//        System.out.println(JSON.toJSONString(map));
        return map;
    }
    public static void main(String[] args) {
        String input = "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
                "Content-Disposition: form-data; name=\"locNo\"\n" +
                "\n" +
                "1\n" +
                "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
                "Content-Disposition: form-data; name=\"test\"\n" +
                "\n" +
                "123\n" +
                "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
                "Content-Disposition: form-data; name=\"quer\"\n" +
                "\n" +
                "111\n" +
                "------WebKitFormBoundarySOfEJLg0rR0hf3mm--";
        getFormData(input);
    }
}