关于HttpServletRequest.getParts()出现的几个问题

各位:
最近再写转发的项目,在过滤器中进行转发。
下面是在对文件上传进行转发时出现的错误
从HttpServletRequest中获取文件:

    Collection<Part> parts = request.getParts(); //出现问题的位置
    MultiValueMap<String, Object> resultMap = new LinkedMultiValueMap<>();
    Iterator<Part> iterator = parts.iterator();
    while (iterator.hasNext()) {
        Part part = iterator.next();
        //参数名称
        String name = part.getName();
        //文件名称
        String submittedFileName = part.getSubmittedFileName();
        //文件流
        InputStream inputStream = part.getInputStream();
    }

后来用postman进行测试;测试10次,大概有4次左右会报错,每次报错都不一样:
下面是报错异常:
第一种:
报错位置:

Collection<Part> parts = request.getParts(); 

Caused by: java.nio.BufferUnderflowException
    at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:154)
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:344)
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:132)
    at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:975)
    at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:879)
    at java.io.InputStream.read(InputStream.java:101)
    at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:97)
    at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:68)
    at org.apache.tomcat.util.http.fileupload.MultipartStream.readBodyData(MultipartStream.java:572)
    at org.apache.tomcat.util.http.fileupload.MultipartStream.discardBodyData(MultipartStream.java:596)
    at org.apache.tomcat.util.http.fileupload.MultipartStream.skipPreamble(MultipartStream.java:614)
    at org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.findNextItem(FileItemIteratorImpl.java:228)
    at org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.<init>(FileItemIteratorImpl.java:142)
    at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:252)
    at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:276)
    at org.apache.catalina.connector.Request.parseParts(Request.java:2921)
    at org.apache.catalina.connector.Request.getParts(Request.java:2823)
    at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1098)
    at com.github.firefly.filter.FireflyFilter.uploadDispatch(FireflyFilter.java:206)
    at com.github.firefly.filter.FireflyFilter.request(FireflyFilter.java:164)
    at com.github.firefly.filter.FireflyFilter.lambda$doFilter$2(FireflyFilter.java:80)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more
    Suppressed: org.apache.tomcat.util.http.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
        at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:981)
        at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:919)
        at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:898)
        at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:117)
        ... 19 more

第二种:

报错位置:

Part part = iterator.next();

Caused by: java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911)
    at java.util.ArrayList$Itr.next(ArrayList.java:861)
    at com.github.firefly.filter.FireflyFilter.uploadDispatch(FireflyFilter.java:210)
    at com.github.firefly.filter.FireflyFilter.request(FireflyFilter.java:164)
    at com.github.firefly.filter.FireflyFilter.lambda$doFilter$2(FireflyFilter.java:80)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more


希望各位能给些解决方案,或者建议!

request.getParts()判断它是否空,或者引号字符串之类的,然后再走下面吧?