路军的回答:
C 原因没啥好讲的,因为Apache的Commons FileUpload组件就是这么设计的,ServletFileUpload可以实例化,但构造函数中需要传递一个FileItemFactory接口类型的对象(所以A, D不对)。 但是由于FileItemFactory是接口,不能用new实例化(所以B不对),需要用它的实现类DiskFileItemFactory进行实例化。
黄怡的回答:
C 原因没啥好讲的,因为Apache的Commons FileUpload组件就是这么设计的,ServletFileUpload可以实例化,但构造函数中需要传递一个FileItemFactory接口类型的对象(所以A, D不对)。 但是由于FileItemFactory是接口,不能用new实例化(所以B不对),需要用它的实现类DiskFileItemFactory进行实例化。
李福顺的回答:
这个需要在jsp页面中引入import org.apache.commons.fileupload.*; 然后直接用里面的ServletFileUpload构造方法来实例化这个对象。 比如可以这么写: ServletFileUpload upload = new ServletFileUpload(diskFactory); try{ DiskFileItemFactory diskFactory = new DiskFileItemFactory(); // threshold 极限、临界值,即硬盘缓存 1M diskFactory.setSizeThreshold(4 * 1024); // repository 贮藏室,即临时文件目录 diskFactory.setRepository(new File(tempPath)); ServletFileUpload upload = new ServletFileUpload(diskFactory); // 设置允许上传的最大文件大小 4M upload.setSizeMax(4 * 1024 * 1024); // 解析HTTP请求消息头 List fileItems = upload.parseRequest(req); Iterator iter = fileItems.iterator(); while(iter.hasNext()) { FileItem item = (FileItem)iter.next(); if(item.isFormField()) { System.out.println("处理表单内容 ..."); processFormField(item, pw); }else{ System.out.println("处理上传的文件 ..."); processUploadFile(item, pw); } }// end while() pw.close(); }catch(Exception e){ System.out.println("使用 fileupload 包时发生异常 ..."); e.printStackTrace(); }// end try ... catch ...
张文跃的回答: