上传的JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="UserServlet?method=icon" method="post" enctype="multipart/form-data">
用户名<input type="text" name="user">
密码<input type="password" name="pwd">
<input type="file" name="myfile">
<button type="submit">上传</button>
</form>
<form action="UsersServlet" method="post">
<input type="submit" value="上传">
</form>
</body>
</html>
Servlet代码
private void icon(HttpServletRequest request, HttpServletResponse response) throws IOException {
String basePath = this.getServletContext().getRealPath("/upload");
System.out.println(basePath);
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setProgressListener(new ProgressListener() {
@Override
public void update(long bytesRead, long ContentLength, int arg2) {
System.out.println("文件大小为 : "+ContentLength+"已处理文件 : "+bytesRead);
System.out.println(Double.valueOf(bytesRead)/Double.valueOf(ContentLength));
System.out.println("表单项 : "+arg2);
}
});
upload.setHeaderEncoding("utf-8");
if(!ServletFileUpload.isMultipartContent(request)) {
return;
}
//设置上传文件的最大值是1MB(抛出异常)
upload.setFileSizeMax(1024*1024);
// upload.
try {
List<FileItem> itemList = upload.parseRequest(request);
System.out.println(itemList.size()+"**************************");
for (FileItem fileItem : itemList) {
if(fileItem.isFormField()) {
String inputName=fileItem.getName();
String value=fileItem.getString();
if("uname".equals(inputName)) {
System.out.println("用户名"+value);
}else if("pwd".equals(inputName)){
System.out.println("密码"+value);
}
}else {
String name = fileItem.getName();
List<String> extList = Arrays.asList("jpg","gif","png","zip");
String ext = name.substring(name.lastIndexOf(".")+1);
if(!extList.contains(ext)) {
System.out.println("文件类型不匹配");
return;
}
String fileName = fileItem.getFieldName();
InputStream fileIs = fileItem.getInputStream();
System.out.println(basePath);
FileOutputStream os=new FileOutputStream(basePath+ "/"+name);
byte [] bs=new byte[1024];
int len=0;
while((len=fileIs.read(bs))>0) {
os.write(bs,0,len);
}
fileIs.close();
os.close();
System.out.println("上传成功");
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
下载的两个 JSP页面 先把list传过去
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="uploadServlet2" method="post" enctype="multipart/form-data">
name: <input type="text" name="uname"><br>
<input type="file" name="file1"><br>
<input type="file" name="file2"><br>
<button type="submit">上传</button>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forEach items="${listFiles }" var="f">
<h4>${f } <a href="downLoadServlet?name=${f }">下载</a></h4>
</c:forEach>
</body>
</html>
下载的servlet
package org.lq.web;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
/**
* Servlet implementation class uploadServlet2
*/
@WebServlet("/uploadServlet2")
@MultipartConfig//将当前Servlet标记为支持上传的servlet
public class uploadServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
public uploadServlet2() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置请求字符集
request.setCharacterEncoding("utf-8");
//设置输出字符集
response.setContentType("text/html;charset=utf-8");
String uname=request.getParameter("uname");
System.out.println("接受表单的内容 uname: "+uname);
Collection<Part> parts=request.getParts();
for (Part part : parts) {
// InputStream is = part.getInputStream();
System.out.println(part.getName());
System.out.println(part.getSize());
System.out.println(part.getSubmittedFileName());
part.write("E:\\sml\\"+UUID.randomUUID());
}
//输出给界面
response.getWriter().print("上传成功");;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}