JSP文件上传
网上的方法几乎都是使用的org.apache.commons.fileupload的jar包,需要手动下载导入commons-fileupload.jar和commons-io.jar。
其实tomcat自带的org.apache.tomcat.util.http.fileupload就可以实现文件上传,不要手动下载导入jar包,使用方法几乎一样。
1. 项目目录结构
2. uploadServlet.java
package servlet;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.apache.tomcat.util.http.fileupload.servlet.ServletRequestContext;
/**
* Servlet implementation class uploadServlet
*/
@WebServlet("/upload")
public class uploadServlet extends HttpServlet {
private static final int MAX_FILE_SIZE= 1024* 1024 * 500;
private static final String UPLOAD_DIRECTOR="upload";
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()YSS
*/
public uploadServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("开始上传");
try {
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload fileUpload=new ServletFileUpload(factory);
fileUpload.setSizeMax(MAX_FILE_SIZE);
List<FileItem> fileItems=fileUpload.parseRequest(new ServletRequestContext(request));
boolean isSuccessful=saveFileItemList(fileItems,getSavePath());
if(isSuccessful)
{
request.setAttribute("result", "文件上传成功!");
}
else {
request.setAttribute("result", "文件上传失败!");
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("result", "文件上传失败!");
}
finally {
request.getRequestDispatcher("/index.jsp").forward(request, response);;
}
}
/**
* 将文件项目集合存储的硬盘的savePath路径
* @param fileItems
* @param savePath
* @return
* @throws Exception
*/
private boolean saveFileItemList(List<FileItem> fileItems,String savePath) throws Exception {
try {
for(FileItem item:fileItems)
{
System.out.println("文件名:"+item.getName());
String fileSavePath=savePath+File.separator+item.getName();
File saveFile= new File(fileSavePath);
System.out.println("文件存储路径:"+fileSavePath);
item.write(saveFile);
}
return true;
} catch (Exception e) {
return false;
}
}
/**
* 获取上传文件存储的目录路径
* @return
*/
private String getSavePath() {
String savePath=getServletContext().getRealPath("/")+UPLOAD_DIRECTOR;
System.out.println(savePath);
File uploadDir= new File(savePath);
if(!uploadDir.exists())
{
uploadDir.mkdir();
}
return savePath;
}
}
3. index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="fileupload" value="upload"/></br>
<input type="submit" value="上传"/>
</form>
<p>${result }</p>
</body>
</html>
4. 运行结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)