日期:2014-05-16  浏览次数:20669 次

apache 提供上传 DiskFileItemFactory ServletFileUpload

1、代码:

public Map<String, String> fileUpload(HttpServletRequest request,final String uploadPath) {
		log.debug("execute fileUpload method.");
		try {
			DiskFileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);
			upload.setHeaderEncoding("UTF-8");
			List items = upload.parseRequest(request);// 上传文件解析
			Iterator itr = items.iterator();// 枚举方法
			while (itr.hasNext()) {
				FileItem item = (FileItem) itr.next();
				if (!item.isFormField()) {// 判断是文件还是文本信息
					if (!"".equals(item.getName())) {// 判断是否选择了文件
						// log.info("上传文件的大小:" + item.getSize());
						// log.info("上传文件的类型:" + item.getContentType());
						// item.getName()返回上传文件在客户端的完整路径名称
						// log.info("上传文件的名称:" + item.getName());
						// 此时文件暂存在服务器的内存当中
						// log.info("filePath:=====" + filePath);
						File file = new File(uploadPath,item.getName());
						// 获取根目录对应的真实物理路径
						HashMap<String, String> hm = new HashMap();
						hm.put("FileSize", String.valueOf(item.getSize()));
						item.write(file);// 保存文件在服务器的物理磁盘中
						hm.put("FileType", item.getContentType());
						String OldFileName = item.getName();
						if (OldFileName.indexOf("\\") != -1)
							hm.put("OldFileName",
									OldFileName.substring(OldFileName.lastIndexOf("\\") + 1));
						else
							hm.put("OldFileName", OldFileName);
						hm.put("FileName", item.getName());
						fileMap.put(item.getFieldName(), hm);
					}
				} else {
					if (map.containsKey(item.getFieldName())) {
						map.put(item.getFieldName(),
								map.get(item.getFieldName()) + "," + item.getString("UTF-8"));
					} else {
						map.put(item.getFieldName(), item.getString("UTF-8"));// 表单中其他信息添加到Map中
					}
				}
			}
			return map;
		} catch (Exception e) {
			log.error(e);
			e.printStackTrace();
			return null;
		}
	}

 2.调用

Map<String, String> sqlMap = fu.fileUpload(request, filePath);
		StruObject struObject = new StruObject();
		if(fu.getFileMap() != null && fu.getFileMap().get("file") != null){
			String fileName = fu.getFileMap().get("file").get("FileName");
			struObject.setFileName(dateStr + fileName);
		}
		struObject.setStruId(sqlMap.get("struId"));
		struObject.setLoadRate(sqlMap.get("loadRate"));
		struObject.setRemark(sqlMap.get("remark"));
		struObject.setLoadType(sqlMap.get("loadType"));
		struObject.setProcedureName(sqlMap.get("procedureName"));
		struObject.setFilePath(datasqlPath + File.separator);
		struService.updateStru(struObject);
?