package com.mandi.servlet;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.mandi.common.Jacksonmethod;
import com.mandi.common.RequestParam;
import com.mandi.servlet.file.FileLoad;
import com.mandi.servlet.file.impl.FileLoadImpl;
/**
* @author mengly
* @version 创建时间:2015å¹´9月25æ—¥ 下åˆ5:09:08
* 类说明
*/
public class Imageuploadservlet extends HttpServlet {
private Logger log=Logger.getLogger(Imageuploadservlet.class);
private static final long serialVersionUID = 1L;
/**
* cop:lt,gt,eq
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ApplicationContext a=WebApplicationContextUtils.getWebApplicationContext(req.getServletContext());
if(a==null)
return;
DiskFileItemFactory dfif=new DiskFileItemFactory();
ServletFileUpload sf=new ServletFileUpload(dfif);
sf.setHeaderEncoding("utf-8");
List<FileItem> list=null;
String path1=req.getParameter("path");
int width=RequestParam.getInt(req, "width");
int height=RequestParam.getInt(req, "height");
String cop=RequestParam.getString(req, "cop");
int size=RequestParam.getInt(req, "size");
FileItem tfi=null;
Map<String, Object> tf=null;
try{
list=sf.parseRequest(req);
Iterator<FileItem> it=list.iterator();
while(it.hasNext())
{
FileItem fi=it.next();
if(fi.isFormField())
{
String pname=fi.getFieldName();
String pvalue=fi.getString();
try{
if("path".equals(pname))
{
path1=pvalue;
}
if("width".equals(pname))
{
width=Integer.valueOf(pvalue);
}
if("height".equals(pname))
{
height=Integer.valueOf(pvalue);
}
if("cop".equals(pname))
{
cop=pvalue;
}
if("size".equals(pname))
{
size=Integer.valueOf(pvalue);
}
}catch(Exception e1){log.info("转æ¢é”™è¯¯!");}
}else{
tfi=fi;
}
}
}catch(Exception e){
log.info(e.getMessage());
}
if(path1==null||path1.isEmpty())
path1="/temp";
String path=req.getServletContext().getRealPath(path1);
File dir=new File(path);
if(!dir.exists()||!dir.isDirectory())
dir.mkdirs();
FileLoad fl=a.getBean(FileLoadImpl.class);
tf=fl.uploadFile_map(path1, req, tfi, true, size);
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json; charset=utf-8");
JsonObject jo=new JsonObject();
Gson g=new Gson();
if(tf!=null)
{
String furl=tf.get("url")+"";
furl=req.getServletContext().getRealPath(furl);
log.info("furl:"+furl);
if(cop!=null&&!cop.isEmpty()&&width>0&&height>0)
{
//检查图片åƒç´
try {
//BufferedImage bi=Sanselan.getBufferedImage(new File(furl));
BufferedImage bi=ImageIO.read(new File(furl));
int rwidth=bi.getWidth();
int rheight=bi.getHeight();
if("lt".equals(cop))
{
if(width<rwidth||height<rheight)
{
jo.addProperty("code", 1);
jo.addProperty("errmsg", "ä¸Šä¼ çš„å›¾ç‰‡åˆ†è¾¨çŽ‡å¤§äºŽç‰¹å®šçš„å®½åº¦å’Œé«˜åº¦::"+width+"*"+height);
resp.getWriter().write(g.toJson(jo));
return;
}
}else if("gt".equals(cop))
{
if(width>rwidth||height>rheight)
{
jo.addProperty("code", 1);
jo.addProperty("errmsg", "ä¸Šä¼ çš„å›¾ç‰‡åˆ†è¾¨çŽ‡å°äºŽç‰¹å®šçš„宽度和高度::"+width+"*"+height);
resp.getWriter().write(g.toJson(jo));
return;
}
}else if("eq".equals(cop))
{
if(width!=rwidth||height!=rheight)
{
jo.addProperty("code", 1);
jo.addProperty("errmsg", "ä¸Šä¼ çš„å›¾ç‰‡åˆ†è¾¨çŽ‡ä¸ç‰äºŽç‰¹å®šçš„宽度和高度::"+width+"*"+height);
resp.getWriter().write(g.toJson(jo));
return;
}
}else{
jo.addProperty("code", 1);
jo.addProperty("errmsg", "ç³»ç»Ÿæ— æ³•åˆ¤æ–æ‚¨è¦å¦‚何判æ–图片分辨率!!");
resp.getWriter().write(g.toJson(jo));
return;
}
} catch (Exception e) {
e.printStackTrace();
jo.addProperty("code", 1);
jo.addProperty("errmsg", "ä¸Šä¼ çš„å›¾ç‰‡ä¸èƒ½æ£å¸¸æ‰“开,请检查!!");
resp.getWriter().write(g.toJson(jo));
return;
}
}
resp.getWriter().write(Jacksonmethod.tojson(tf, false));
}else{
jo.addProperty("code", 1);
jo.addProperty("errmsg", "ä½ ä¸Šä¼ çš„å›¾ç‰‡ä¸ç¬¦åˆè§„则ä¸èƒ½ä¿å˜!");
resp.getWriter().write(g.toJson(jo));
return;
}
}
}