JSP頁面:css
<%@ 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代碼:html
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; } }