网络编程
位置:首页>> 网络编程>> Jsp编程>> JSP组件commons-fileupload实现文件上传

JSP组件commons-fileupload实现文件上传

作者:lijiao  发布时间:2023-07-03 03:16:01 

标签:JSP,commons,fileupload,文件上传

本文实例为大家分享了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处理上传请求

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com