<form action="UploadServlet" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="name" /> 性别:<input type="text" name="sex" /> 性别:<input type="text" name="sex" /> 附件:<input type="file" name="attachment" /> <input type="submit" value="提交" /> </form>servlet 代码:
package cn.com.coolzsc.view;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.FilenameUtils;
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("name");
String sex = request.getParameter("sex");
long start = System.currentTimeMillis();
try {
//首先,判断是否multipart编码类型
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(request);
while(iter.hasNext()){
FileItemStream item = iter.next();
//得到表单域的名称
String name = item.getFieldName();
//得到表单域的值(这是一个输入流)
InputStream stream = item.openStream();
//如果是普通表单域
if(item.isFormField()){
String value = Streams.asString(stream,request.getCharacterEncoding());
System.out.println(name+"="+value);
}else{ //如果是文件
if(stream.available() != 0){//如果文件域没有选择文件,则忽略处理
String filename = item.getName(); //得到上传的文件名称
if(filename != null){
//因为在IE下面,上传的文件还包含有此文件在客户端机器的路径
//所以,要把这个路径去掉,只取文件名
filename = FilenameUtils.getName(filename);
}
System.out.println(name+"="+filename);
//将上传文件的输入流输出到磁盘的文件上
Streams.copy(stream, new FileOutputStream("d:/"+filename), true);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
}
需要的jar包:commons-fileupload-1.2.2.jarcommons-io-2.0.1.jar