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);
|
|
}
|
|
}
|