⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uploadevent.java~24~

📁 用jsp做的一个简单的论文管理系统。由于时间关系
💻 JAVA~24~
字号:
package stumanage.events;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import java.sql.DriverManager;
import org.apache.commons.fileupload.FileUploadException;
import java.sql.PreparedStatement;
import java.sql.Connection;
import javax.servlet.http.HttpSession;
import stumanage.beans.*;
import java.util.regex.*;
public class UploadEvent
    extends EventHandleBase {
  private static final String CONTENT_TYPE = "text/html; charset=GBK";
  private UserInfo student = new UserInfo();
  public UploadEvent() {
  }

  /**
   * Override  process:上传文件
   * @param sc ServletContext
   * @param request HttpServletRequest
   * @param response HttpServletResponse
   * @throws IOException
   * @throws ServletException
   */
  public void process (ServletContext sc,
                      HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {

  HttpSession session = request.getSession();
  student = (UserInfo)session.getAttribute("user");
  response.setContentType(CONTENT_TYPE);
  //System.out.println(request.getParameter("subject")); //for test
  //System.out.println(request.getParameter("tNo"));     //for test
  //System.out.println(request.getParameter("filename"));  //for test

  PrintWriter out = response.getWriter();
  try {
    System.out.println("enter the first try");
    DiskFileUpload fu = new DiskFileUpload();
    /**
     * 设置允许用户上传的文件最大值   单位:字节
     */
    fu.setSizeMax(2*1024*1024);
    /**
     * 设置最多只允许在内存中的数据大小 单位:字节
     */
    fu.setSizeThreshold(4096);
    /**
     * 设置不能放在内存中的数据临时存放的目录
     */
    fu.setRepositoryPath("f:\\temp");
    /**
     * 开始读取上传信息
     */
    System.out.println("信息设置成功");
    List fileItems = fu.parseRequest(request);
    // 依次处理每个上传的文件
    Iterator iter = fileItems.iterator();
    String temp1 = null;
    String subject = null;
    String tno = null;
    //正则匹配,过滤路径取文件名
    String regExp=".+\\\\(.+)$";

   //过滤掉的文件类型
   String[] errorType={".exe",".com",".cgi",".asp"};
   Pattern p = Pattern.compile(regExp);


    while(iter.hasNext()){
      System.out.println("enter the while");  //for test
      FileItem item = (FileItem)iter.next();
      if(item.isFormField()) {
        temp1 = item.getFieldName();

        /**
         * 这里用request.getParameter("subject")得到的是null
         */
        if (temp1.equalsIgnoreCase("subject")) {
          subject = item.getString();
          System.out.println(subject); //for test
        }
        else if(temp1.equalsIgnoreCase("tNo")) {
          tno = item.getString();
        }
        continue;
      }
      //忽略其他不是文件域的所有表单信息
      if (!item.isFormField()) {
        String name = item.getName();
        System.out.println(name);
        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 {
            int byteRead = 0;
            InputStream inStream = item.getInputStream();
            InputStreamReader reader = new InputStreamReader(inStream);
            /*char  [] buf = new char[5];
                       reader.read(buf);
                       String test = new String(buf);
             String newString = new String(test.getBytes("ISO8859_1"));
                       System.out.println(newString);   // for test   */

            /*byte [] b = new byte[50];
                       inStream.read(b);
                       String test = new String(b);
                       String newTest = new String(test.getBytes("ISO8859_1"));
                       System.out.println(newTest);  //for test  */
            /*String test ="contentType= " + item.getContentType();
                       test = test + "getString() = " + item.getString();
             test = test + "getString(ISO8859_1) = " + item.getString("ISO8859_1");
                       System.out.println(test);   // for test  */

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String dsn = "jdbc:odbc:info";
            Connection con = DriverManager.getConnection(dsn);
            String temp =
                "insert into PaperInfo(Sno,TNo,Subject,PaperContent,flag) values(?,?,?,?,'no')";
            PreparedStatement pstmt = con.prepareStatement(temp);
            pstmt.setString(1, student.getUserID());
            pstmt.setString(2, tno);
            pstmt.setString(3, subject);
            pstmt.setCharacterStream(4, reader, (int) size);
            System.out.println(temp);
            pstmt.executeUpdate();
            System.out.println("上传成功");
            inStream.close();
          }
          catch (Exception e) {
            System.out.println("发生异常" + e);

          }
        }
        else {
          throw new FileUploadException("fail to upLoad");
        }
      }
    }


  }catch(Exception e) {
    System.out.println("发生异常" + e);
  }

   //Debug.log (this, "process", "Using default process");
 }

  /**
   * getURL
   *
   * @return String
   * @todo Implement this stumanage.events.EventHandleBase method
   */
  protected String getURL() {
    ResourceBundle rd = ResourceBundle.getBundle("URL");
    String temp = rd.getString("UPSUC");
    return temp;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -