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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30408111/article/details/78833156

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

附上自己的前台代码,一个表单同时包含文件上传个输入框数据的传输,在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资源的时候,传不上去,提示资源已存在,或许是有人已经上传了,大家需要可以找找下载,找不到可以留言邮箱,我发给你们。

猜你喜欢

转载自blog.csdn.net/qq_30408111/article/details/78833156