网络编程 
首页 > 网络编程 > 浏览文章

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

(编辑:jimmy 日期: 2024/10/8 浏览:3 次 )

本文实例为大家分享了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<".+\\\\(.+)$";
  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处理上传请求

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:jsp 判断list是否包含string的实现方法
下一篇:用JS实现购物网站商品放大镜效果
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?