📄 photouploadservlet.java
字号:
/*
* Created on 2007-4-22
* Last modified on 2007-8-22
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.fileUpload;
import java.awt.Image;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.service.model.UserModel;
import com.yeqiangwei.club.service.user.UserLogin;
import com.yeqiangwei.club.service.user.UserService;
import com.yeqiangwei.club.service.util.BasicInfoService;
import com.yeqiangwei.image.ImageFactory;
import com.yeqiangwei.image.ImageOperate;
import com.yeqiangwei.io.File;
import com.yeqiangwei.util.FormatDateTime;
import com.yeqiangwei.util.HttpServletUtils;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.Validator;
public class PhotoUploadServlet extends HttpServlet {
private static final String separator = java.io.File.separator;
private static final Logger logger = Logger.getLogger(PhotoUploadServlet.class);
private static final long serialVersionUID = 1L;
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
{
String act = ParamUtils.getStringParameter(request,"act");
if(act.equals("upload")){
this.upload(request,response);
}
else if(act.equals("clip")){
response.setContentType("text/HTML;charset=UTF-8");
PrintWriter out = response.getWriter();
String s = this.clip(request,response);
out.print(s);
out.close();
}
}
private String clip(HttpServletRequest request,HttpServletResponse response){
boolean bea = this.clip(ParamUtils.getStringParameter(request,"p")
, ParamUtils.getIntParameter(request,"w")
, ParamUtils.getIntParameter(request,"h")
, ParamUtils.getIntParameter(request,"x")
, ParamUtils.getIntParameter(request,"y")
, ParamUtils.getIntParameter(request,"x_")
, ParamUtils.getIntParameter(request,"y_"));
StringBuffer sb = new StringBuffer();
if(bea){
String photo = ParamUtils.getStringParameter(request,"photo","");
photo = photo.replace("temp/","");
int userId = ParamUtils.getIntParameter(request,"userId",0);
UserModel user = this.getUserService().findById(userId);
if(!Validator.isEmpty(user)){
user.setPhoto(photo);
try {
this.getUserService().update(user,false);
UserLogin.update(request,user);
} catch (ClubException e) {
logger.error(e.toString());
}
/**
* 更新登录用户的Session信息
*/
}
sb.append("{\"bea\":");
sb.append(bea);
sb.append(",\"userId\":");
sb.append(userId);
sb.append(",\"photo\":\"");
sb.append(photo);
sb.append("\"");
sb.append("}");
}else{
sb.append("{\"bea\":");
sb.append(bea);
sb.append("}");
}
return sb.toString();
}
/**
*
* @param path 图片物理路径
* @param w 剪裁后的宽度
* @param h 剪裁后的高度
* @param x
* @param y
* @param x_
* @param y_
*/
private boolean clip(String path, int w, int h ,int x, int y, int x_,int y_)
{
boolean bea = false;
String fileExt = path.substring(path.lastIndexOf(".")+1,path.length());
String npath = path.replace("temp"+separator,"");
Image img;
try {
img = javax.imageio.ImageIO.read(new java.io.File(path));
if(w>img.getWidth(null)&&h>img.getHeight(null)){
//如果被剪裁的图片尺寸小于指定尺寸则不剪裁只移动
File.moveFile(path,npath);
}else{
ImageOperate image = null;
if(fileExt.equals("gif")){
image = ImageFactory.creator(ImageOperate.GIF);
}else{
image = ImageFactory.creator(ImageOperate.JPEG);
}
bea = image.clip(path,npath,w,h,x,y,x_,y_);
}
} catch (IOException e) {
logger.error(e.toString());
}
return bea;
}
public void upload(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
String realpath = ParamUtils.getRealPath(request);
if(!realpath.endsWith(separator)){
realpath = realpath + separator;
}
int userId = ParamUtils.getIntParameter(request,"userId",0);
StringBuffer repositorypath = new StringBuffer(); //大文件临时存放路径
StringBuffer filepath = new StringBuffer(); //文件真实存放路径
StringBuffer relativepath = new StringBuffer(); //虚拟路径
filepath.append(realpath);
filepath.append("fileupload");
filepath.append(separator);
repositorypath.append(filepath);
repositorypath.append(separator);
repositorypath.append("temp");
if(File.createFolder(repositorypath.toString())==null){
logger.error("目录创建失败:"+repositorypath.toString());
}else{
repositorypath.append(separator);
}
filepath.append("photo");
filepath.append(separator);
filepath.append("temp");
if(File.createFolder(filepath.toString())==null){
logger.error("目录创建失败:"+filepath.toString());
}else{
filepath.append(separator);
}
relativepath.append(this.getBasicInfoService().findOnly().getFileUploadDomain());
relativepath.append("/photo/temp/");
StringBuffer newname = new StringBuffer();
newname.append("p");
newname.append(userId);
FileUploadBean fileUpload = new FileUploadBean();
fileUpload.service(request,response);
FileUploadModel fileUploadModel = new FileUploadModel();
fileUploadModel.setFileName(newname.toString());
fileUploadModel.setUserId(userId);
fileUploadModel.setMaxSize(1048576); //最大上传1M
fileUploadModel.setMySpareSize(1048576); //剩余空间设置1M
fileUploadModel.setAllowedExt("jpg|jpeg|gif");
fileUploadModel.setRepositoryPath(repositorypath.toString());
fileUploadModel.setFilePath(filepath.toString());
fileUpload.setFileUploadModel(fileUploadModel);
boolean bea = fileUpload.saveFile();
if(!bea){
request.setAttribute("message",fileUpload.getMessage());
HttpServletUtils.forward(request,response,"/club/msg.jsp");
}else{
FileUploadTemp.remove(request);
relativepath.append(fileUploadModel.getFileName());
relativepath.append("?r=");
relativepath.append(FormatDateTime.now());
request.setAttribute("photourl",relativepath);
request.setAttribute("photopath",filepath.append(fileUploadModel.getFileName()));
HttpServletUtils.forward(request,response,"/club/photo.jsp");
}
}
public BasicInfoService getBasicInfoService() {
return ServiceWrapper.<BasicInfoService>getSingletonInstance(ServiceLocator.BASICINFO);
}
public UserService getUserService() {
return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -