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"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="UploadServlet" enctype="multipart/form-data" method="post"> 用户姓名:<input type="text" name="userName" /><br/> 上传头像:<input type="file" name="userPhoto" /><br/> <input type="submit" value="提交"> </form> </body> </html>
Servlet代码:
package com.gy.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jspsmart.upload.File; import com.jspsmart.upload.SmartUpload; public class UploadServlet extends HttpServlet { /** * Constructor of the object. */ public UploadServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); try{ SmartUpload su = new SmartUpload();//创建SmartUpload对象 su.setCharset("utf-8");//设置编码 su.initialize(this.config,request,response);//初始化设置 su.setAllowedFilesList("gif,bmp,jpg");//设置允许上传的文件扩展名 su.setMaxFileSize(2*1024*1024);//设置单个文件允许最大长度(单位:字节) su.setTotalMaxFileSize(10*1024*1024);//设置上传文件的总大小(单位:字节) su.upload();//将文件数据上传 //注意:使用SmartUpload对象获取request这句代码要放在upload()方法后面,否则拿不到数据 out.print(su.getRequest().getParameter("userName")); File f = su.getFiles().getFile(0);//获取第一个上传文件 String savePath = "upload\\"; savePath += f.getFileName();//组装存储路径 f.saveAs(savePath);//将文件保存到指定位置 out.println("上传成功!"); }catch(Exception ex){ ex.printStackTrace(); out.println("上传异常:"+ex.getMessage()); } out.flush(); out.close(); } private ServletConfig config; /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init(ServletConfig config) throws ServletException { // Put your code here this.config = config; } }