本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下
1、准备:
将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到"WEB-INFlib"目录下
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处理上传请求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。