📄 photouploadservlet.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 + -