weixin_42263430
weixin_42263430
2018-12-25 11:05
采纳率: 33.3%
浏览 1.3k
已采纳

ServletFileUpload.parseRequest(request) 报系统找不到指定路径

如标题 上传文件上传docx 文档会报以上的错误 但是上传txt,图片都是可以成功的,代码如下,请问为什么怎么解决 谢谢

        //项目绝对路径
      String savePath = getSession().getServletContext().getRealPath("/upload");


      //上传文件临时缓存路径
      String tempPath = getSession().getServletContext().getRealPath("/temp");

      HttpSession session = request.getSession();
      try{
          request.setCharacterEncoding("utf-8");  

          if(FileUpload.isMultipartContent(requestContext)){  

                DiskFileItemFactory factory = new DiskFileItemFactory();  
                factory.setRepository(new File(tempPath));//设置缓存路径  
                factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB

                ServletFileUpload upload = new ServletFileUpload(factory);  
                upload.setHeaderEncoding("utf-8");  
                upload.setFileSizeMax(1024*1024*1000);//设置单个文件上传大小1000M
                upload.setSizeMax(1024*1024*5000);//设置总上传文件大小5000M

                upload.setProgressListener(new UploadListener(new UploadStatus(),session));//设置上传进度监听

                List<FileItem> items = new ArrayList<FileItem>();  
                try {  
                    items = upload.parseRequest(request);  //****这里开始报错** ******
                } catch (FileUploadException e1) { 
                    System.out.println("文件上传发生错误" + e1.getMessage());  
                }  

                Iterator<FileItem> it = items.iterator();  
                while(it.hasNext()){  
                    FileItem fileItem = it.next();  
                    if(fileItem.isFormField()){//文字框        
                           System.out.println(fileItem.getFieldName()+"   "+fileItem.getName()+"   "+new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
                    }else{//文件 流 
                           System.out.println(fileItem.getFieldName() + "   " +   
                                   fileItem.getName() + "   " + fileItem.isInMemory() + "    " +   
                                   fileItem.getContentType() + "   " + fileItem.getSize());  

                           if(fileItem.getName()!=null && fileItem.getSize()!=0){  
                                   File fullFile = new File(fileItem.getName());
                                   File parentDic = new File(savePath);
                                   if(!parentDic.exists()){
                                       parentDic.mkdirs();
                                   }
                                   File newFile = new File(savePath+"/" + fullFile.getName());
                                   if(!newFile.exists()){
                                       newFile.createNewFile();
                                   }
                                   try {  
                                       fileItem.write(newFile);  
                                       renderJson(JsonDTO.success());
                                   } catch (Exception e) { 
                                       e.printStackTrace();
                                       renderJson(JsonDTO.fail());

                                   }  
                           }else{  
                                   System.out.println("文件没有选择 或 文件内容为空");  
                                   renderJson(JsonDTO.fail());

                           }  
                    }  

                }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • weixin_42263430
    weixin_42263430 2018-12-25 03:11
    已采纳

    找到问题了。。。原来是我缓冲区设置的太小了。。。factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
    这里将值设置的大一点就可以了....

    点赞 评论

相关推荐