出现如下错误 源码和错误提示如下  请指教!
java.io.IOException: Corrupt form data: premature ending
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:205)
at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)
at com.jsl.projectInfo.action.materilListAction.add(materilListAction.java:99)
at com.jsl.projectInfo.action.materilListAction.doPost(materilListAction.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at cn.gov.common.utils.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
我的代码
private void add(HttpServletRequest request,HttpServletResponse response) throws
ServletException, IOException {

Materiallist ins = new Materiallist();
String path = getServletContext().getRealPath("/");
String saveDirectory = path + "attch\\materiallist\\";
//String guid = PKGenerator.ReceiveGUID();
int is=0;
// 每个文件最大5m,最多10个文件,所以...
int maxPostSize = 10 * 30 * 1024 * 1024;
// response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传
MultipartRequest multi = new MultipartRequest(request, saveDirectory,
maxPostSize, "utf-8");
String guid=multi.getParameter("guid");
        String filedesc= multi.getParameter("filedesc");
String filelevel = multi.getParameter("filelevel");
String flag1=multi.getParameter("flag");
String mustflag = multi.getParameter("mustflag");
String projecttypeid = multi.getParameter("projecttypeid");
String name1=multi.getParameter("name");
 int flag = 0;  
Enumeration files = multi.getFileNames();

while (files.hasMoreElements()) {
//String mId = (String)list.get(flag);
String name = (String) files.nextElement();
File f = multi.getFile(name);
if (f != null) {

 
String fileName = multi.getFilesystemName(name);
String filepath=saveDirectory+fileName;
if(f.length()<31457280){
 try {
             FileInputStream stream = new FileInputStream(f);              byte[] b = new byte[(int)f.length()];
             stream.read(b);              stream.close();
                         
         } catch (Exception e) {
          e.printStackTrace();
         }
if(f.isFile() && f.exists()){
            f.delete();         }
}else{ is = 1;
if(f.isFile() && f.exists()){
            f.delete();         }
}