解决smartupload获取不到表单值以及中文乱码的问题

最近在做一个小项目的时候,设计到一个表单同时要上传图片和输入框数据的问题,出现了两个问题,现在简单记录一下,自己的完成过程。

附上自己的前台代码,一个表单同时包含文件上传个输入框数据的传输,在web中表单如果要是想上传文件,必须满足两个条件,第一:method=post,第二:enctype="multipart/form-data",以上两部缺一不可,下面附上我的前台代码:

<form action="RegIndexServlet" method="post" enctype="multipart/form-data" >
	<h1>注册license</h1>
	license文件:
	<input type="file" name="file">
	<br> 注册时长:
	<input type="text" name="vaildtime" id="vaildtime">
	<br>    
	<br>注册日期
	<input id="regDate" name="regDate" type="text" value="<%=date%>" readonly="readonly">
	<br>    
	<br> 注册节点数:
	<input type="text" name="permissionHosts" id="permissionHosts">
	<br>    
	<br>公司名称:
	<input type="text" name="company" id="company">
	<br>    
	<br>
	<input type="submit" value="提交">
	</form>

遇到的第一个问题:

在运用了enctype="multipart/form-data"之后,所有的数据以流的方式传输数据到后台,后台代码运用的servlet,但是运用request.getParameter(name);获取不到前台传输的数据,所以在这种情况下,可以运用SmartUpload组件获取,

SmartUpload组件实用方法:

1,下载jspSmartUpload组件,下载下来是一个zip文件解压到文件夹

2,利用cmd命令进入黑框,到解压之后的文件classes目录下,执行jar zcv jspSmartUpload.jar com命令,生成一个jspSmartUpload.jar 的jar包,直接把jar包导入工程中,就可以用了。

3,编写代码:这里附上我写的代码

SmartUpload su = new SmartUpload();
		try {
			su.initialize(this.getServletConfig(),request,response);  
			su.setMaxFileSize(10*1024*1024);//限制上传文件的大小  
             //mySmartUpload.setAllowedFilesList("txt,html,jpg,js");//设置允许上传的文件类型  
			//su.setDeniedFilesList("exe,doc,txt");//设置禁止上传的文件列表  
			su.upload();
			String vaildtime = su.getRequest().getParameter("vaildtime");// 获取注册时长
			String regDate = su.getRequest().getParameter("regDate");// 获取注册日期
			String permissionHosts = su.getRequest().getParameter("permissionHosts");// 获取注册主机数
			String company = su.getRequest().getParameter("company");// 获取注册公司名称
			System.out.println(vaildtime + "....." + regDate + "....." + permissionHosts + "....." + company);
		} catch (SmartUploadException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
这样就可以获取到数据表单中不是上传文件的输入框的数据了, 注意:在获取数据之前,必须要设置upload,否则是获取不到数据的。

二:当获取到数据之后发现,如果前台传输的是中文的话,传输到后台,是会乱码的,这是后就需要解决乱码问题,这个问题其实很简单

解决方法如下:

String filename = su.getFiles().getFile(0).getFilePathName();//获取文件名
        filename = new String(filename.getBytes("GBK"),"utf-8");

以上就是自己在开发的时候一个小小的提高吧!现在记录下来,希望可以帮到大家

注:不知道为啥在上传jspSmartUpload.zip资源的时候,传不上去,提示资源已存在,或许是有人已经上传了,大家需要可以找找下载,找不到可以留言邮箱,我发给你们。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
真正解决jspSmartUpload组件上传下载文件时中文乱码问题。以前在网上也找过!!!下载了些,都没能解决中文乱码问题!自己改了源代码,并做成jar包,直接用就可以。 另,我把File()类 改成了 SmartFile()类。详情请下载。 另我的Blog有详细描述 http://blog.csdn.net/cartonwang/archive/2008/10/28/3168114.aspx 用朋友问到:译后的结果啊,怎么用啊 ------------------------------------------- 我看了下,给的是jar包。直接用就好了。用法和原版的差不多。稍微有点不同。原版:com.jspsmart.upload.File 我的:com.jspsmart.upload.SmartFile 原版的是File类,我的是SmartFile类。另,http://download.csdn.net/source/796632 中有上传文件时不刷新页面的方法。我浦发银行的项目就是用这些方法。很好用。 ------------------------------------------------ gylsm发表的评论 真是晕死,用原版的上传还是支持中文的,你的连上传都成了乱码了,又没讲下你的用法和原版的区别,都不知道可不可以用 --------------------------------------------------------------------------- 我上面已经讲了吧,其实和原版的没有什么区别的,唯一一个地方要注意的是File()类我改成SmartFile()了,你用该类时,改成SmartFile()类就好了。 如果还不能用,很可能是你没有把原来的Jar包给删除。 时间:2009-04-09 18:45:48 来自:61.142.100.* ming100star发表的评论 谢谢伟大的楼主!! 时间:2009-04-06 15:48:04 来自:220.249.99.* zwei27发表的评论 朋友太谢谢你了,我到网上怎么都找不到,你帮我搞定,SKS

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值