日期:2014-05-17  浏览次数:20769 次

FileUpload 问题
我用fileupload时, fileList = sfu.parseRequest(request);得到的fileList 的size为0,这个是什么问题,急求解决。
一下为servlet代码:
Java code
final long MAX_SIZE = 300 * 1024 * 1024;// 设置上传文件最大值  
            // 允许上传的文件格式的列表  
            final String[] allowedExt = new String[] {"jpg", "jpeg", "gif", "txt",  
                    "doc","mp3", "wma", "m4a","rar","zip" };  
            response.setContentType("text/html");  
            // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题  
            response.setCharacterEncoding("utf-8");  
      
            // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload  
            DiskFileItemFactory dfif = new DiskFileItemFactory();  
            dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘  
            dfif.setRepository(new File(request.getRealPath("/")  
                    + "ImagesUploadTemp" ));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录  
      
            // 用以上工厂实例化上传组件  
            ServletFileUpload sfu = new ServletFileUpload(dfif);  
            // 设置最大上传大小  
            sfu.setSizeMax(MAX_SIZE);  
      
            PrintWriter out = response.getWriter();  
            // 从request得到所有上传域的列表  
            List<FileItem> fileList = null;  
            try {  
               [color=#FF0000] fileList = sfu.parseRequest(request);  [/color]
            } catch (FileUploadException e) {// 处理文件尺寸过大异常  
                if (e instanceof FileUploadBase.SizeLimitExceededException) {  
                    out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");  
                    out  
                            .println("<a href=\"FileUpload.html\" target=\"_top\">返回</a>");  
                    return;  
                }  
                e.printStackTrace();  
            }  
            // 没有文件上传  
            if (fileList == null || fileList.size() == 0) {  
                out.println("请选择上传文件<p />");  
                out.println("<a href=\"FileUpload.html\" target=\"_top\">返回</a>");  
                return;  
            }  
            // 得到所有上传的文件  
            Iterator fileItr = fileList.iterator();  
            // 循环处理所有文件  
            while (fileItr.hasNext()) {  
                FileItem fileItem = null;  
                String path = null;  
                long size = 0;  
                // 得到当前文件  
                fileItem = (FileItem) fileItr.next();  
                // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)  
                if (fileItem == null || fileItem.isFormField()) {  
                    continue;  
                }  
                // 得到文件的完整路径  
                path = fileItem.getName();  
                // 得到文件的大小  
                size = fileItem.getSize();  
                if ("".equals(path) || size == 0) {  
                    out.println("请选择上传文件<p />");  
                    out  
                            .println("<a href=\"FileUpload.html\" target=\"_top\">返回</a>");  
                    return;  
                }  
      
                // 得到去除路径的文件名  
                String t_name = path.substring(path.lastIndexOf("\\") + 1);  
                // 得到文件的扩展名(无扩展名时将得到全名)  
                String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);  
                // 拒绝接受规定文件格式之外的文件类型  
                int allowFlag = 0;  
                int allowedExtCount = allowedExt.length;  
                for (; allowFlag < allowedExtCount; allowFlag++) {  
                    if (allowedExt[allowFlag].equals(t_ext))