package cn.newgxu.bbs.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cn.newgxu.bbs.common.exception.BBSException;
import cn.newgxu.bbs.common.util.Util;
import cn.newgxu.bbs.common.util.fileupload.NewgxuFaceUpload;
import cn.newgxu.bbs.common.util.fileupload.NewgxuFileUploadStats;
import cn.newgxu.bbs.domain.UploadItem;
import cn.newgxu.bbs.service.UserService;
/**
*
* @author 红叶狐
* @since 4.0.0
* @version $Revision 1.1$
*/
public class FaceUploadServlet extends BaseServlet {
private static final long serialVersionUID = -9189092436481567087L;
private static final Log log = LogFactory.getLog(UploadServlet.class);
private UserService userService = (UserService) Util.getBean("userService");
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
doFileUpload(session, request, response);
}
private void doFileUpload(HttpSession session, HttpServletRequest request,
HttpServletResponse response) throws IOException {
if (log.isDebugEnabled()) {
log.debug("接收到文件上传请求,正在开始处理...");
}
List<FileItem> items = null;
NewgxuFaceUpload upload = (NewgxuFaceUpload) Util.getBean("faceUpload");
NewgxuFileUploadStats stats = new NewgxuFileUploadStats();
try {
stats.setStat(NewgxuFileUploadStats.UPLOADING);
items = upload.upload(request, stats);
List<UploadItem> uploadItems = upload.convertItems(items);
// userService.reckonItems(uploadItems, getAuth(request));
userService.FaceReckonItems(uploadItems, getAuth(request));
sendCompleteResponse(response, "头像上传成功,请刷新");
} catch (FileUploadException e) {
log.debug(e);
e.printStackTrace();
sendErrorRespone(response, e.getMessage());
} catch (BBSException e) {
log.debug(e);
e.printStackTrace();
sendErrorRespone(response, e.getMessage());
return;
}
}
private void sendErrorRespone(HttpServletResponse response, String message)
throws IOException {
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter writer = null;
try {
writer = response.getWriter();
log.debug(message);
writer.write("<script>alert(\"头像上传出错\");</script>");
writer
.write("<script type='text/javascript'>function killUpdate() { window.parent.killUpdate('"
+ message
+ "'); }</script></head><body onload='killUpdate()'>");
} catch (IOException e) {
log.debug(e);
} finally {
if (writer != null) {
writer.close();
}
}
}
private void sendCompleteResponse(HttpServletResponse response,
String message) throws IOException {
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter writer = null;
try {
writer = response.getWriter();
log.debug(message);
writer.write("<script>alert(\"头像上传成功\");</script>");
writer
.write("<script type='text/javascript'>function killUpdate() { window.parent.killUpdate('"
+ message
+ "'); }</script></head><body onload='killUpdate()'>");
} catch (IOException e) {
log.debug(e);
} finally {
if (writer != null) {
writer.close();
}
}
}
}