首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

FileUpload 有关问题

2012-05-12 
FileUpload 问题我用fileupload时, fileList sfu.parseRequest(request)得到的fileList 的size为0,这个

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))                          break;                  }                  if (allowFlag == allowedExtCount) {                      out.println("请上传以下类型的文件<p />");                      for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)                          out.println("*." + allowedExt[allowFlag]                                  + "   ");                      out                              .println("<p /><a href=\"FileUpload.html\" target=\"_top\">返回</a>");                      return;                  }                        long now = System.currentTimeMillis();                  // 根据系统时间生成上传后保存的文件名                  String prefix = String.valueOf(now);                  // 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下  //              String u_name = request.getRealPath("/") + "ImagesUploaded/"  //                      + prefix + "." + t_ext;                  String filename = prefix + "." + t_ext;                  try {                      // 保存文件到C:\\upload目录下                      fileItem.write(new File("C:\\upload\\"+filename));                      System.out.println(filename);                      out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext                              + "   文件大小: " + size + "字节<p />");                      out                              .println("<a href=\"FileUpload.html\" target=\"_top\">继续上传</a>");                  } catch (Exception e) {                      e.printStackTrace();                  }              }   



这个是html代码
HTML code
<form  id="form" action='servlet/UploadServlet' method='post' enctype="multipart/form-data">        <input type='file' id="fileform"  style= "" value="upload"/>        <input type="submit" value="submit"></input>        </form>



[解决办法]
表单元素必须有name值才会被提交。

热点排行