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

📄 photoaction.java

📁 个人Blog java编写的Blog可以直接使用!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
									Globals.MAIL_QUEUE);
					// 写入待发送邮件队列
					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());
			//删除数据库信息
			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;				
					}
					//写入到数据库
					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;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -