JSP 全名为 Java Server Pages - java 服务器页面是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术有点类似 ASP 技术,它是在传统的网页 html(标准通用标记语言的子集)文件 (*.htm,*.html) 中插入 Java 程序段 (Scriptlet) 和 JSP 标记(tag),从而形成 JSP 文件,后缀名为(*.jsp)。
这篇文章主要介绍了 JSP 组件 commons-fileupload 实现文件上传, 具有一定的参考价值,感兴趣的小伙伴们可以参考一下
1、准备:
将 commons-fileupload-1.1.zip 和 commons-io-1.1.zip 复制到 "\web-INF\lib" 目录下
2、首先是 Servlet:FileUpload.java
- package servlet;
- import java.io.File;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util. * ;
- import java.util.regex.Pattern;
- import java.util.regex.Matcher;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.fileupload.FileItem;
- import org.apache.commons.fileupload.FileUploadException;
- import org.apache.commons.fileupload.disk.DiskFileItemFactory;
- import org.apache.commons.fileupload.servlet.ServletFileUpload;
- public class FileUpload extends HttpServlet {
- private String uploadPath = "E:\\addnetFile\\"; //要上传文件的目录
- private File tempPath = new File("E:\\tempFile\\"); //存放上传的文件的目录
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
- IOException {}
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
- IOException {
- response.setContentType("text/html;charset=GB2312");
- response.setCharacterEncoding("gb2312");
- PrintWriter out = response.getWriter();
- out.println("请求内容的长度为:" + request.getContentLength());
- out.println("请求内容的类型为:" + request.getContentType());
- DiskFileItemFactory factory = new DiskFileItemFactory();
- factory.setRepository(tempPath);
- factory.setSizeThreshold(4096);
- ServletFileUpload upload = new ServletFileUpload(factory);
- upload.setSizeMax(1000000);
- List < ?>fileitems = null;
- try {
- fileitems = upload.parseRequest(request);
- Iterator < ?>iterator = fileitems.iterator();
- String regex = ".+\\\\(.+)$";
- String[] errortype = {
- ".exe",
- ".com",
- ".cgi",
- ".asp"
- };
- Pattern p = Pattern.compile(regex);
- while (iterator.hasNext()) {
- FileItem item = (FileItem) iterator.next();
- if (!item.isFormField()) {
- String name = item.getName();
- long size = item.getSize();
- if (name == null || name.equals("") && size == 0) continue;
- Matcher m = p.matcher(name);
- if (m.find()) {
- for (int temp = 0; temp < errortype.length; temp++) {
- if (m.group(1).endsWith(errortype[temp])) throw new IOException(name + ":wrong type");
- }
- try {
- item.write(new File(tempPath, m.group(1)));
- out.println(name + " " + size + "<br/>");
- out.println("上传成功");
- } catch(Exception e) {
- out.println("333" + e);
- }
- } else {
- throw new IOException("fail to upload");
- }
- }
- }
- } catch(IOException e) {
- out.println("222" + e);
- } catch(FileUploadException e1) {
- e1.printStackTrace();
- out.println("111" + e1);
- }
- }
- public void init() throws ServletException {
- if (!new File(uploadPath).isDirectory()) new File(uploadPath).mkdir();
- if (!tempPath.isDirectory()) tempPath.mkdir();
- }
- public void destroy() {
- super.destroy();
- }
- }
3、其次是 html:Uploadfile.html
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>Uploadfilel.html</title>
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="this is my page">
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <!--<link rel="stylesheet" type="text/CSS" href="./styles.css">-->
- </head>
- <body>
- <form action="/Firstjsp/servlet/FileUpload" method="post" enctype="multipart/form-data" name="form1">
- <input type="file" name="file"/>
- <input type="submit" name="submit" value="upload"/>
- </form>
- <form action="/Firstjsp/servlet/FileUpload" method="post" enctype="multipart/form-data" name="uploadform">
- <table>
- <tr>
- <td>
- 文件1:<input type="file" name="X" size="40"/>
- </td>
- </tr>
- <tr>
- <td>
- 文件2:<input type="file" name="Y" size="40"/>
- </td>
- </tr>
- <tr>
- <td>
- 文件3:<input type="file" name="Z" size="40"/>
- </td>
- </tr>
- </table>
- <input type="submit" name="upload" value="开始上传"/>
- </form>
- </body>
- </html>
4、最后是配置 web.xml
- <servlet>
- <description>This is the description of my J2EE component</description>
- <display-name>This is the display name of my J2EE component</display-name>
- <servlet-name>FileUpload</servlet-name>
- <servlet-class>servlet.FileUpload</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>FileUpload</servlet-name>
- <url-pattern>/servlet/FileUpload</url-pattern>
首先运行 html,servlet 处理上传请求
来源: http://www.phperz.com/article/17/0814/339062.html