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

📄 photouploadservlet.java

📁 hibernate+spring的相片上传项目
💻 JAVA
字号:
package org.lenovoAC.tools;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Properties;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import java.util.*;
import java.io.PrintWriter;
import java.io.File;
import org.lenovoAC.tools.Tools;
import java.io.InputStream;
import org.lenovoAC.hibernateDao.DirectorIntroHibernateDao;
import org.lenovoAC.pojo.DirectorIntro;
import java.math.BigDecimal;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class PhotoUploadServlet
    extends HttpServlet
{
  String name=""; //姓名
  int age=0;   //年龄
  String photoUrl=""; //照片
  String state="";  //董事会,股东标识
  String intrInfo=""; //介绍
  int count=0;  //取循环次数
  String photo="";

  File fSave=null;
  File fTemp=null;
  private String tempFilePath; //临时文件目录
  private String saveFilePath; //保存文件目录
  private boolean isXMLOrPropertiesFile; //读配置文件时是读xml还是读Properties文件
  private DirectorIntroHibernateDao directorIntroHibernateDao;
  public void setTempFilePath(String tempFilePath)
  {
    this.tempFilePath = tempFilePath;
  }

  public String getTempFilePath()
  {
    return this.tempFilePath;
  }

  public void setSaveFilePath(String saveFilePath)
  {
    this.saveFilePath = saveFilePath;
  }

  public String getSaveFilePath()
  {
    return this.saveFilePath;
  }

  public void setIsXMLOrPropertiesFile(boolean isXMLOrPropertiesFile)
  {
    this.isXMLOrPropertiesFile = isXMLOrPropertiesFile;
  }

  public boolean isIsXMLOrPropertiesFile()
  {
    return this.isXMLOrPropertiesFile;
  }
  public void setDirectorIntroHibernateDao(DirectorIntroHibernateDao directorIntroHibernateDao)
  {
    this.directorIntroHibernateDao=directorIntroHibernateDao;
  }
  public DirectorIntroHibernateDao getDirectorIntroHibernateDao()
  {
    return this.directorIntroHibernateDao;
  }
  public void init()
  {
    boolean isXML=this.isIsXMLOrPropertiesFile();
    if(isXML)  //是读取xml文件
    {
      tempFilePath=this.getTempFilePath();
      saveFilePath=this.getSaveFilePath();
    }
    else //不是读取xml文件,则读properties文件
    {
      try
      {
        InputStream is = this.getClass().getResourceAsStream(
            "PhotoPath.properties");
        Properties pro = new Properties();
        pro.load(is);
        tempFilePath=pro.getProperty("tempFilePath");
        saveFilePath=pro.getProperty("saveFilePath");
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }
    }
    fTemp=new File(tempFilePath);
    fSave=new File(saveFilePath);
    if(!fTemp.exists()) //目录不存在则创建目录
    {
      fTemp.mkdir();
    }
    if(!fSave.exists()) //如果目录不存在则创建目录
    {
      fSave.mkdir();
    }

  }
  public void service(HttpServletRequest request, HttpServletResponse response)
  {
    ApplicationContext axt=WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
    DirectorIntroHibernateDao diha=(DirectorIntroHibernateDao)axt.getBean("DirectorIntroHibernateDao");
    //this.getServletConfig().getServletContext().getRealPath("");
    this.init();
    try
    {
      PrintWriter pw = response.getWriter();

      DiskFileItemFactory factory = new DiskFileItemFactory();
      factory.setSizeThreshold(4096);//最大内存大小
      factory.setRepository(fTemp);  //临时文件保存目录

      ServletFileUpload upload = new ServletFileUpload(factory);
      upload.setHeaderEncoding("UTF-8");
      upload.setSizeMax(10194304);  //设置上传文件大小,允许上传文件的大小10M

      List items = upload.parseRequest(request);
      Iterator it=items.iterator();
      while (it.hasNext())
      {
        count++;
        FileItem fi = (FileItem) it.next();
        if (fi.isFormField()) //如果是表单域
        {
          processFormField(fi);
        }
        else //否则上传文件
        {
          processFileUpload(fi,pw);
        }
      }
      /**
       * 将数据持久化
       */
      DirectorIntro dir = new DirectorIntro();
      dir.setName(name);
      dir.setAge(new BigDecimal(age));
      dir.setPhotoUrl(photo);
      dir.setIntrInfo(intrInfo);
      dir.setTime(new Date());
      dir.setState(state);
      diha.insertDri(dir);
      pw.println(
          "<script>alert('上传成功!');window.location.href='DirectorIntroList.jsp';</script>");

    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  /**
   * 处理表单数据
   * @param fi FileItem
   */
  public void processFormField(FileItem fi)
      throws Exception
  {
    if(fi.getFieldName().equals("name"))
      name=Tools.toIso(fi.getString());
    if(fi.getFieldName().equals("age"))
      age=Integer.parseInt(fi.getString());
    if(fi.getFieldName().equals("state"))
      state=fi.getString();
    if(fi.getFieldName().equals("intrInfo"))
      intrInfo=Tools.toIso(fi.getString());
  }
  /**
   * 处理文件上传
   * @param fi FileItem
   */
  public void processFileUpload(FileItem fi,PrintWriter pw)
      throws Exception
  {
    String filePath=fi.getName();   //文件上传路径名
    System.out.println("文件上传的路:"+filePath);
    long fileSize=fi.getSize(); //上传的文件大小
    String fileName = new File(fi.getName()).getName();  //上传文件名
    String[] array=fileName.split("\\.");
    int len=array.length;
    String fileExt=array[len-1]; //得到文件扩展名
    if(!(fileExt.equals("jpg")||fileExt.equalsIgnoreCase("JPG")||fileExt.equals("gif")
        ||fileExt.equalsIgnoreCase("GIF")||fileExt.equals("bmp")||fileExt.equalsIgnoreCase("BMP")))
    {
      pw.println("<script>alert('上传失败,文件类型只能为jpg/gif/bmp');window.location.href='DirectorIntroList.jsp';</script>");
      return;
    }
    if(fileSize>=10194304)
    {
      pw.println("<script>alert('上传失败,文件大小最大只能为10M');window.location.href='DirectorIntroList.jsp';</script>");
      return;
    }
    java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyyMMddHHmmss");
    photo=sdf.format(new Date())+"."+fileExt;  //利用日期得到一个字符串作为相片的别名
    File saveFile = new File(fSave,photo); //构造File通过一个file目录对象和一个文件名
    fi.write(saveFile);
  }
  /**
   * 消毁方法
   */
  public void destroy()
  {
  }
}

⌨️ 快捷键说明

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