?? photoaction.java
字號:
Globals.MAIL_QUEUE);
// 寫入待發(fā)送郵件隊列
queue.write(pbean.getSite().getId(), sender
.getMimeMessage());
if(log.isDebugEnabled())
log.debug("Photo share mail was written to the sending queue.");
} catch (Exception e) {
log.error("send photo share mail failed.", e);
}finally{
url = null;
img = null;
s_mails = null;
}
}
}.start();
}
/**
* 刪除照片
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
protected ActionForward doDelete(final ActionMapping mapping,
final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response, String s_photo_id) throws Exception
{
PhotoForm photo = (PhotoForm)form;
//刪除照片文件
int photo_id = Integer.parseInt(s_photo_id);
PhotoBean pbean = PhotoDAO.getPhotoByID(photo_id);
String ext = null;
if(pbean != null){
HttpContext context = getHttpContext(mapping, form, request, response);
getPhotoSaver().delete(context, pbean.getImageURL());
if(!pbean.getPreviewURL().equals(pbean.getImageURL()))
getPhotoSaver().delete(context, pbean.getPreviewURL());
//刪除數(shù)據(jù)庫信息
PhotoDAO.delete(pbean);
SearchProxy.remove(pbean);
ext = "aid="+pbean.getAlbum().getId();
}
return makeForward(mapping.findForward("photo_album"), photo.getSid(), ext);
}
/**
* 上傳照片
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
protected ActionForward doUpload(final ActionMapping mapping,
final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) throws Exception
{
PhotoForm photo1 = (PhotoForm)form;
validateClientId(request, photo1);
ActionMessages msgs = new ActionMessages();
do{
FormFile[] files = new FormFile[5];
files[0] = photo1.getImage();
files[1] = photo1.getImage2();
files[2] = photo1.getImage3();
files[3] = photo1.getImage4();
files[4] = photo1.getImage5();
//檢查相簿是否有效
AlbumBean album = AlbumDAO.getAlbumByID(photo1.getAlbum());
if (album == null) {
msgs.add(ERROR_KEY, new ActionMessage(
"error.object_not_found", String.valueOf(photo1
.getAlbum())));
break;
}
SiteBean site = super.getSiteBean(request);
UserBean loginUser = super.getLoginUserAfterValidateSiteOwner(request);
String photo_desc;
if(StringUtils.isNotEmpty(photo1.getDesc())){
photo_desc = StringUtils.abbreviate(super.autoFiltrate(
site, photo1.getDesc()), MAX_PHOTO_DESC_LENGTH);
photo_desc = super.filterScriptAndStyle(photo_desc);
}
else
photo_desc = " ";
for(int i=0;i<files.length;i++){
if(files[i]==null || files[i].getFileSize()<=0 || StringUtils.isEmpty(files[i].getFileName()))
continue;
//判斷單張圖片的大小
/*
if(files[i].getFileSize()>4194304){//4*1024*1024
msgs.add(ERROR_KEY, new ActionMessage("error.file_too_large"));
break;
}*/
if(!accept(files[i])){
msgs.add(ERROR_KEY, new ActionMessage("error.upload_file_not_supported"));
break;
}
//檢查上傳空間限制
int photo_size = DLOG4JUtils.sizeInKbytes(files[i].getFileSize());
int max_photo_size = site.getCapacity().getPhotoTotal();
if(max_photo_size >= 0){
int current_size = site.getCapacity().getPhotoUsed();
if((current_size + photo_size) > max_photo_size){
msgs.add(ERROR_KEY, new ActionMessage("error.photo_space_full"));
break;
}
}
//保存照片并生成略縮圖
Photo img = null;
try{
img = getPhotoSaver().save(
getHttpContext(mapping, form, request, response),
files[i], photo1.getAutoRotate() == 1);
if(img == null){
msgs.add(ERROR_KEY, new ActionMessage("error.upload_failed"));
break;
}
//寫入到數(shù)據(jù)庫
PhotoBean pbean = new PhotoBean();
pbean.setSite(site);
pbean.setUser(loginUser);
if(StringUtils.isNotEmpty(photo1.getName())){
pbean.setName(super.autoFiltrate(site, photo1.getName()));
}
else
pbean.setName(img.getName());
pbean.setDesc(photo_desc);
if(StringUtils.isNotEmpty(photo1.getKeyword())){
if(site.isFlagSet(SiteBean.Flag.ILLEGAL_GLOSSARY_IGNORE))
pbean.setKeyword(photo1.getKeyword());
else
pbean.setKeyword(DLOGSecurityManager.IllegalGlossary
.deleteIllegalWord(photo1.getKeyword()));
}
pbean.setPreviewURL(img.getPreviewURL());
pbean.setImageURL(img.getImageURL());
pbean.setPhotoInfo(img);
pbean.setFileName(super.autoFiltrate(site,img.getFileName()));
pbean.setStatus(photo1.getStatus());//公開或者隱藏
PhotoDAO.create(album, pbean, (photo1.getCover()==1));
}catch(IllegalAccessException e){
msgs.add(ERROR_KEY, new ActionMessage("error.access_deny", e.getMessage()));
break;
}catch(Exception e){
log.error("Upload photo file failed.", e);
msgs.add(ERROR_KEY, new ActionMessage("error.upload_failed", e.getMessage()));
break;
}
}
break;
}while(true);
if(!msgs.isEmpty()){
saveMessages(request, msgs);
ActionForward upload = makeForward(mapping.findForward("photo_upload"), photo1.getSid());
upload.setRedirect(false);
return upload;
}
String ext = "aid=" + photo1.getAlbum();
return makeForward(mapping.findForward("photo_album"), photo1.getSid(), ext);
}
/**
* 修改照片
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
protected ActionForward doUpdate(final ActionMapping mapping,
final ActionForm form, HttpServletRequest request,
final HttpServletResponse response) throws Exception
{
PhotoForm photo = (PhotoForm)form;
validateClientId(request, photo);
ActionMessages msgs = new ActionMessages();
if(StringUtils.isEmpty(photo.getName()))
msgs.add("name", new ActionMessage("error.photo.name_empty"));
else{
PhotoBean pbean = PhotoDAO.getPhotoByID(photo.getId());
if(pbean != null){
if(!StringUtils.equals(pbean.getName(), photo.getName())){
pbean.setName(super.autoFiltrate(pbean.getSite(), photo.getName()));
}
if(!StringUtils.equals(pbean.getDesc(),photo.getDesc())){
String desc = StringUtils.abbreviate(super.autoFiltrate(
pbean.getSite(), photo.getDesc()),
MAX_PHOTO_DESC_LENGTH);
pbean.setDesc(super.filterScriptAndStyle(desc));
}
else
pbean.setDesc(" ");
pbean.setStatus(photo.getStatus());
int new_album = photo.getAlbum();
String new_Keyword = photo.getKeyword();
if(!pbean.getSite().isFlagSet(SiteBean.Flag.ILLEGAL_GLOSSARY_IGNORE))
new_Keyword = DLOGSecurityManager.IllegalGlossary.deleteIllegalWord(new_Keyword);
PhotoDAO.update(new_album, pbean, new_Keyword, (photo.getCover()==1));
}
}
if(!msgs.isEmpty()){
saveMessages(request, msgs);
return mapping.findForward("photo_edit");
}
String ext = "aid=" + photo.getAlbum() +"&pid=" + photo.getId();
return makeForward(mapping.findForward("photo_show"), photo.getSid(), ext);
}
/**
* 返回照片的處理類的實例
* @return
*/
protected PhotoSaver getPhotoSaver(){
if(photoSaver != null)
return photoSaver;
synchronized(this){
if(photoSaver != null)
return photoSaver;
try{
String clsName = getServlet().getInitParameter(photo_saver_class);
photoSaver = (PhotoSaver)Class.forName(clsName).newInstance();
}catch(Exception e){
photoSaver = new FileSystemSaver();
}
}
return photoSaver;
}
/**
* 判斷該類型文件是否允許上傳
* @param file
* @return
*/
protected boolean accept(FormFile file){
String ext = StringUtils.getFileExtend(file.getFileName());
if(ext==null)
return false;
String filesDenied = getServlet().getInitParameter("filesDenied");
if(filesDenied==null)
return true;
StringTokenizer st = new StringTokenizer(filesDenied, ",");
while(st.hasMoreElements()){
if(ext.equalsIgnoreCase(st.nextToken()))
return false;
}
return true;
}
protected HttpContext getHttpContext(final ActionMapping mapping,
final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
final ServletContext context = super.context();
return new HttpContext() {
public HttpServletRequest getRequest() {
return request;
}
public HttpServletResponse getResponse() {
return response;
}
public HttpServlet getServlet() {
return servlet;
}
public ServletContext getApplication() {
return context;
}
public ActionMapping getMapping() {
return mapping;
}
public ActionForm getForm() {
return form;
}
};
}
private PhotoSaver photoSaver;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -