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

📄 photouploadservlet.java

📁 这是一款最新的野蔷薇论坛源码,有需要的朋友可以尽情下载
💻 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 + -