同时提交文件表单和普通表单的问题 java.io.UnsupportedEncodingException: U_usermessage_xingmingU_usermessage_xingming这个难道是encoding name? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 报的就是不支持这个encoding U_usermessage_xingming http://blog.csdn.net/lian_zhihui1984/article/details/6822201看看这个还能帮到你。 研究了一天,我自己终于搞定了!下面把我的解决方法贴出来分享!JSP页面:send.jsp,页面编码为GBK <body> <%! Date now=new Date(); String form=String.format("%tF",now); %> <form action="Uploadfile" method="post" enctype="multipart/form-data"> <p>上传的文件是:(文件大小不要超过2MB)<br> <input type="file" name="file" size="80"/><br/> <p>文件描述 <input type="text" name="upDe" size="80"/><br> <p>上传时间 <input type="text" name="uptime" size="80"/><br/> <input type="submit" value="提交"/> </form> </body>我的servlet方法,Uploadfile.javapackage com.servlet;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class Uploadfile extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String uploadPath=this.getServletContext().getRealPath("/file"); String message=null,content=null,dtme=null; try{ if(ServletFileUpload.isMultipartContent(request)){ //判断获取的是不是文件 DiskFileItemFactory disk=new DiskFileItemFactory(); disk.setSizeThreshold(20*1024); //设置内存可存字节数 disk.setRepository(disk.getRepository()); //设置临时文件目录 ServletFileUpload up=new ServletFileUpload(disk); int maxsize=2*1024*1024; List list=up.parseRequest(request); //获取上传列表 Iterator i=list.iterator(); //创建列表的迭代器 while(i.hasNext()){ FileItem fm=(FileItem)i.next();//遍历列表 if(!fm.isFormField()){ String filePath=fm.getName(); //获取文件全路径名 String fileName=""; int startIndex=filePath.lastIndexOf("\\"); if(startIndex!=-1){ //对文件名进行截取 fileName=filePath.substring(startIndex+1); }else{ fileName=filePath; } if(fm.getSize()>maxsize){ message="文件太大了,不要超过2MB"; break; } String fileSize=new Long(fm.getSize()).toString(); if((fileName==null)||fileName.equals("")&&(fileSize.equals("0"))){ message="文件名不能为空,文件大小也不能为零!"; break; } File saveFile=new File(uploadPath,fileName); fm.write(saveFile);//向文件中写入数据 message="文件上传成功!"; }else{ String foename=fm.getFieldName();//获取表单元素名 String con=fm.getString("GBK"); //表单元素 if(foename.equals("upDe")){ content=con; }else if(foename.equals("uptime")){ dtme=con; } } } } }catch(Exception ex){ ex.printStackTrace(); } request.setAttribute("result", message); request.setAttribute("upDe", content); request.setAttribute("dtme", dtme); request.getRequestDispatcher("message.jsp").forward(request, response); }}message.jsp<body> <table border=1> <tr> <td>上传情况:</td> <td><%=request.getAttribute("result") %></td> </tr> <tr> <td>上传情况:</td> <td><%=request.getAttribute("upDe") %></td> </tr> <tr> <td>上传时间:</td> <td><%=request.getAttribute("dtme") %></td> </tr> </table>我上传文件是通过commons-fileUpload组件,当然用到的组件是commons-fileupload-1.2.2.jar和commons-io-2.1.jar这个两个包,然后通过上面的方法就可以解决普通表单和文件表单同时提交的问题了,对于FileItem对象的getString()方法有两种重载方式:第一种是无参的,编码方式系统默认的;第二种是有参的,参数就是定义的编码方式,如UTF-8,GBK等。为了避免获取请求数据时出现中文乱码,可以应用设置编码格式的getString()方法。 JTable 表头 合并 /etc/inittab设置启动tomcat导致web应用字符集为ANSI_X3.4-1968,为什么、怎么改为utf-8 有点问题想不明白.大家给点意见吧 求助,关于jdk1.6自带的xml.soap包,生成空节点问题 <s:if >点用 spring+ibatis+struts2中dbcp连接池怎么不会自动关闭? 又遇到妖怪问题了郁闷 关于在SmartUpload上传时相对路径的问题? hibernate 核心接口 请问在那里可以下载到jdk 跪求啦!毕业设计的一个功能,大家帮帮忙!!! 求高手指教 maven项目ibatis 错误
JSP页面:send.jsp,页面编码为GBK <body>
<%!
Date now=new Date();
String form=String.format("%tF",now);
%>
<form action="Uploadfile" method="post" enctype="multipart/form-data">
<p>上传的文件是:(文件大小不要超过2MB)<br>
<input type="file" name="file" size="80"/><br/>
<p>文件描述
<input type="text" name="upDe" size="80"/><br>
<p>上传时间
<input type="text" name="uptime" size="80"/><br/>
<input type="submit" value="提交"/>
</form>
</body>我的servlet方法,Uploadfile.javapackage com.servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class Uploadfile extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
String uploadPath=this.getServletContext().getRealPath("/file");
String message=null,content=null,dtme=null;
try{
if(ServletFileUpload.isMultipartContent(request)){ //判断获取的是不是文件
DiskFileItemFactory disk=new DiskFileItemFactory();
disk.setSizeThreshold(20*1024); //设置内存可存字节数
disk.setRepository(disk.getRepository()); //设置临时文件目录
ServletFileUpload up=new ServletFileUpload(disk);
int maxsize=2*1024*1024;
List list=up.parseRequest(request); //获取上传列表
Iterator i=list.iterator(); //创建列表的迭代器
while(i.hasNext()){
FileItem fm=(FileItem)i.next();//遍历列表
if(!fm.isFormField()){
String filePath=fm.getName(); //获取文件全路径名
String fileName="";
int startIndex=filePath.lastIndexOf("\\");
if(startIndex!=-1){ //对文件名进行截取
fileName=filePath.substring(startIndex+1);
}else{
fileName=filePath;
}
if(fm.getSize()>maxsize){
message="文件太大了,不要超过2MB";
break;
}
String fileSize=new Long(fm.getSize()).toString();
if((fileName==null)||fileName.equals("")&&(fileSize.equals("0"))){
message="文件名不能为空,文件大小也不能为零!";
break;
}
File saveFile=new File(uploadPath,fileName);
fm.write(saveFile);//向文件中写入数据
message="文件上传成功!";
}else{
String foename=fm.getFieldName();//获取表单元素名
String con=fm.getString("GBK");
//表单元素
if(foename.equals("upDe")){
content=con;
}else if(foename.equals("uptime")){
dtme=con;
}
}
}
}
}catch(Exception ex){
ex.printStackTrace();
}
request.setAttribute("result", message);
request.setAttribute("upDe", content);
request.setAttribute("dtme", dtme);
request.getRequestDispatcher("message.jsp").forward(request, response);
}
}
message.jsp<body>
<table border=1>
<tr>
<td>上传情况:</td>
<td><%=request.getAttribute("result") %></td>
</tr>
<tr>
<td>上传情况:</td>
<td><%=request.getAttribute("upDe") %></td>
</tr>
<tr>
<td>上传时间:</td>
<td><%=request.getAttribute("dtme") %></td>
</tr>
</table>我上传文件是通过commons-fileUpload组件,当然用到的组件是commons-fileupload-1.2.2.jar和commons-io-2.1.jar这个两个包,然后通过上面的方法就可以解决普通表单和文件表单同时提交的问题了,对于FileItem对象的getString()方法有两种重载方式:第一种是无参的,编码方式系统默认的;第二种是有参的,参数就是定义的编码方式,如UTF-8,GBK等。为了避免获取请求数据时出现中文乱码,可以应用设置编码格式的getString()方法。