`

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);

此时注意事项:1.表单中所有参数都在sqlMap中,request.getParameter是null
              2.spring mvc中<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">一定要去掉,加上会将request对象转换

 

分享到:
评论

相关推荐

    DiskFileItemFactory实现文件上传 FileInputStream

    `DiskFileItemFactory`是Apache Commons FileUpload库中一个关键的类,它用于处理HTTP请求中的多部分数据(Multipart Form Data),也就是通常所说的文件上传。本文将详细介绍`DiskFileItemFactory`和`...

    apache文件上传_apache文件上传_

    总的来说,Apache Commons FileUpload提供了一种高效、灵活的方式来处理Java Web中的文件上传。通过合理的配置和编码,你可以构建出稳定且安全的文件上传功能。记住,文件上传时的安全性至关重要,避免上传恶意文件...

    Apache文件上传组件jar包

    在Java Web应用中,无论是简单的表单提交还是复杂的文件上传需求,Apache文件上传组件都能提供强大的支持。 标题中提到的"Apache文件上传组件jar包"实际上是指Apache Commons FileUpload库,它是一个开源项目,是...

    DiskFileItemFactory实现文件上传FileInputStream下载.pdf

    文件上传和下载是Web开发中常见的功能之一,涉及到的Java技术主要包括Servlet、Apache Commons FileUpload组件等。从给定的文件信息来看,我们关注的重点是DiskFileItemFactory如何实现文件上传,以及如何利用...

    Apache 文件上传

    总之,Apache FileUpload为Java开发者提供了一套强大的文件上传解决方案,通过理解和运用这些知识点,可以构建安全、高效的文件上传功能。在实际应用中,还需要结合具体的业务场景,考虑性能、安全和用户体验等多个...

    apache上传

    例如,它可能包含了创建 DiskFileItemFactory 和 ServletFileUpload 对象,以及处理 FileItem 流的代码。 `张孝祥 文件上传组件的应用与编写 - liang851128的专栏 - CSDNBlog.htm` 是一篇关于文件上传组件使用的...

    apache fileupload 文件上传实例

    在Servlet或Filter中,我们需要创建一个`DiskFileItemFactory`来处理临时存储上传的文件,然后使用`ServletFileUpload`解析请求。示例代码如下: ```java DiskFileItemFactory factory = new DiskFileItemFactory...

    commons-fileupload-1.3.1.jar=DiskFileItemFactory等上传下载jar包

    在Java开发中,文件上传和下载是常见的功能需求,尤其在网络应用中,用户可能需要上传图片、...通过`DiskFileItemFactory`和`ServletFileUpload`的使用,开发者可以有效地管理上传的文件,保证服务的稳定性和安全性。

    利用org.apache.commons.fileupload上传多个文件

    总之,Apache Commons FileUpload 提供了一种方便的方式来处理 HTTP 文件上传,通过其提供的工具类和接口,我们可以轻松地在 Java Web 应用中实现多文件上传的功能。注意,在生产环境中,还需要考虑安全性问题,如...

    Apache Commons fileUpload实现文件上传

    Apache Commons ...总的来说,Apache Commons FileUpload为Java开发者提供了强大的文件上传支持,简化了处理多部分表单数据的过程。了解其工作原理和使用方法,可以帮助我们更好地构建安全、高效的文件上传功能。

    基于apache commons.fileupload的文件上传组件

    在创建一个基于Apache Commons FileUpload的文件上传组件时,通常会包含以下步骤: 1. 创建`DiskFileItemFactory`实例。 2. 使用工厂创建`ServletFileUpload`实例,设置大小限制。 3. 解析`HttpServletRequest`对象...

    org.apache.commons.fileupload

    Apache Commons是Apache软件基金会的一个项目,它提供了许多Java编程中常用的功能模块,FileUpload就是其中之一,它使得在Servlet或JSP应用中接收和处理多部分/表单数据(即包含文件上传的表单)变得简单。...

    apache-common-uploadfiile

    总结来说,"apache-common-uploadfile"是一个解决Java Servlet环境中文件上传问题的库,它提供了高效且灵活的解决方案,使得开发者能够方便地处理用户上传的各种文件。在Web开发中,掌握Apache Commons FileUpload的...

    DiskFileItemFactory需要的jar包commons-fileupload-1.3.jar和commons-io-1.2.jar(文件上传)

    这两个Java Archive (JAR) 文件提供了Apache Commons FileUpload和Apache Commons IO项目的核心功能,它们对于实现高效且可靠的文件上传机制至关重要。 Apache Commons FileUpload是一个专门处理HTTP请求中的多部分...

    Java 文件上传组件 Apache Commons FileUpload 应用指南

    - Apache Commons FileUpload 提供了 `ServletFileUpload` 类,用于解析 HTTP 请求中的多部分数据。 - `DiskFileItemFactory` 是一个工厂类,负责创建 `DiskFileItem` 对象,这些对象封装了每个表单字段的数据,...

Global site tag (gtag.js) - Google Analytics