在我的项目中,我必须将图像作为base64字符串从移动设备发送到服务器。
问题是,如果图像大小很大,我从过滤器类中得到以下错误
java.lang.StackOverflowError: null
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4719)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4570)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3779)
at java.util.regex.Pattern$Branch.match(Pattern.java:4606)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4660)
at java.util.regex.Pattern$Loop.match(Pattern.java:4787)
wrapped by: org.glassfish.jersey.server.ContainerException: java.lang.StackOverflowError
at com.LogUIDFilter.doFilter(LogUIDFilter.java:99) [22 skipped]
以下是我的过滤器类
public class LogUIDFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// pass the request along the filter chain
chain.doFilter(request, response);
}
}
如何将巨大的基础64文本从移动设备发送到服务器。是否有任何其他投注方式将图像从移动设备发送到服务器。
任何帮助将不胜感激!!!!
答案 0 :(得分:1)
问题与base64图像的大小无关。
问题是您在代码中使用正则表达式,我可以想象您正在测试base64字符串的内容。 该错误与该正则表达式的解析器完成的长递归有关。
使用递归调用分析包含某种路径的正则表达式(例如重复的备用路径,如(A|B)*
)。
如果解析的字符串非常长,则会生成StackOverflowError。