servlet接收multipart/form-data表单数据

本文深入探讨了HTTP表单提交的两种方式,并解释了在大数据传输时选择'multipart/form-data'的重要性。同时,提供了一种解析使用'multipart/form-data'传输数据的方法,包括使用DiskFileItemFactory和ServletFileUpload类进行数据解析,以及如何导入相关jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表单的的提交方式有“application/x-www-form-urlencoded”和“multipart/form-data”两种方式,默认的缺省情况为“application/x-www-form-urlencoded”提交。

一般情况下使用“application/x-www-form-urlencoded”会比较快捷,然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。特别在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。所以,大数据传输时一般选择“multipart/form-data”。


然而当使用“multipart/form-data”传输时,如果传输的数据有多个参数,那么用request.getParameter()取到的值会是null。所以要用request.getInputStream()取值并解析。解析的部分网上提供多种封装好的方法。下面为其中一种方法。

DiskFileItemFactory factory = new DiskFileItemFactory(); 
		ServletFileUpload upload = new ServletFileUpload(factory); 
		upload.setHeaderEncoding("UTF-8");
		List items = upload.parseRequest(request);
		Map param = new HashMap(); 
		for(Object object:items){
		    FileItem fileItem = (FileItem) object; 
		    if (fileItem.isFormField()) { 
		        param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的 
		    }
		}

用该方法解析完之后可以直接用param.get()获取你要的值,但是该方法要导入commons-fileupload-1.3.jar和commons-io-1.2.jar。

此为jar包下载地址http://download.youkuaiyun.com/detail/han123456o/6769327

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值