• servlet 实现多个文件上传


    java code:

    package com.commpim.performance;

    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Iterator;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;


    import javax.servlet.ServletException;
    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;

    /**
    * Servlet implementation class for Servlet: UploadFile2Servlet
    *
    */
    public class UploadFilet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    //用于存放上传文件的目录
    private String uploadPath="E:\\upFile\\";
    private File tempPath=new File("E:\\upFile\\temp");

    /**
    * 初始化Servlet,确保需要使用的目录都被建立<br>
    *
    @throws javax.servlet.ServletException
    */

    @Override
    public void init() throws ServletException{
    if(!new File(uploadPath).isDirectory())
    new File(uploadPath).mkdir();
    if(!tempPath.isDirectory())
    tempPath.mkdir();
    }
    /**
    * 销毁Servelt
    */
    public void destory(){
    super.destroy();
    }

    /**
    *
    @param request
    *
    @param response
    *
    @throws javax.servlet.ServletException
    *
    @throws java.io.IOException
    */

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    //创建一个上传项目工厂,并设置其缓存数据大小和临时文件保存位置
    DiskFileItemFactory factory=new DiskFileItemFactory();
    factory.setSizeThreshold(4096);
    factory.setRepository(tempPath);

    //使用项目工厂创建一个ServletFileUpload对象,用于解析文件上传请求
    //并设置可以上传的文件的最大字节数,超过会抛出异常
    ServletFileUpload upload=new ServletFileUpload(factory);
    upload.setSizeMax(1000000);
    upload.setHeaderEncoding("utf-8");

    List fileItems=null;
    try{
    //开始读取上传信息
    fileItems=upload.parseRequest(request);
    //依次处理每一个上传的文件
    Iterator itor=fileItems.iterator();
    //正则匹配,过滤路径取文件名
    String regExp=".+\\\\(.+)$";
    //过滤文件类型
    String[] errorType={".exe",".com",".cgi",".asp"};
    Pattern p=Pattern.compile(regExp);
    while(itor.hasNext()){
    FileItem item=(FileItem)itor.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);
    boolean result=m.find();
    //如果是允许上传的文件类型就执行上传操作
    if(result){
    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(uploadPath,m.group(1)));

    }catch(Exception e){
    }
    }else{
    throw new IOException("fail to upload");
    }
    }
    }
    }catch(IOException e){
    e.printStackTrace();
    }catch(FileUploadException e1){
    e1.printStackTrace();
    }

    }
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
    * Handles the HTTP <code>GET</code> method.
    *
    @param request servlet request
    *
    @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    /**
    * Handles the HTTP <code>POST</code> method.
    *
    @param request servlet request
    *
    @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    /**
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
    return "cliff";
    }
    // </editor-fold>
    }

    html code:

    <html>
    <body>
    <form name="fileform" method="post" action="UploadFilet"
    style
    ="display: none; font-weight: bold;"
    enctype
    ="multipart/form-data">
    <div align="center">
    <table width="421" border="1" bordercolor="#C5D6FC"
    id
    ="urltable">
    <tr>
    <td width="421">
    <div align="center">Upload Files</div>
    </td>
    </tr>
    <tr>
    <td><input type="file" name="url_1" size="62" /></td>
    </tr>
    <tr>
    <td><input name="url_2" type="file" size="62" /></td>
    </tr>
    </table>
    </div>
    <p align="center"><input type="submit" name="Submit"
    value
    ="Submit" /></p>
    </form>
    </body>
    </html>




  • 相关阅读:
    TestNG并发测试包
    @Valid的坑
    spring boot 下 spring security 自定义登录配置与form-login属性详解
    在eclipse上搭建springBoot
    分页问题
    谷歌chrome://chrome-urls/
    chrome中清除dns缓存
    pg中的非varchar类型的模糊搜索
    spring中用xml配置构造注入的心得
    Flask-Limiter使用详细说明
  • 原文地址:https://www.cnblogs.com/macula/p/2334790.html
Copyright © 2020-2023  润新知