package com.sims.web.formbean; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Properties; import org.apache.struts.action.ActionForm; import org.apache.struts.upload.FormFile; public class BaseForm extends ActionForm { private static Properties properties = new Properties(); static{ try { properties.load(BaseForm.class.getClassLoader().getResourceAsStream("arrowuploadfiletype.properties")); } catch (IOException e) { e.printStackTrace(); } } /** 获取当前页 **/ private int page; /** 设置是否进行查找 **/ private String query; public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } public int getPage() { return page<1? 1 : page; } public void setPage(int page) { this.page = page; } /** * 验证上传文件类型是否属于图片格式 * @return */ public static boolean validateImageFileType(FormFile formfile){ if(formfile!=null && formfile.getFileSize()>0){ List<String> arrowType = Arrays.asList("image/bmp","image/png","image/gif","image/jpg","image/jpeg","image/pjpeg"); List<String> arrowExtension = Arrays.asList("gif","jpg","bmp","png"); String ext = getExt(formfile); return arrowType.contains(formfile.getContentType().toLowerCase()) && arrowExtension.contains(ext); } return true; } public static String getExt(FormFile formfile){ return formfile.getFileName().substring(formfile.getFileName().lastIndexOf('.')+1).toLowerCase(); } /** * 验证上传文件是否属于图片/flash动画/word文件/exe文件/pdf文件/TxT文件/xls文件/ppt文件 * @param formfile * @return */ public static boolean validateFileType(FormFile formfile){ if(formfile!=null && formfile.getFileSize()>0){ String ext = formfile.getFileName().substring(formfile.getFileName().lastIndexOf('.')+1).toLowerCase(); List<String> arrowType = new ArrayList<String>(); for(Object key : properties.keySet()){ String value = (String)properties.get(key); String[] values = value.split(","); for(String v : values){ arrowType.add(v.trim()); } } return arrowType.contains(formfile.getContentType().toLowerCase()) && properties.keySet().contains(ext); } return true; } /** * 保存文件 * @param savedir 存放目录 * @param fileName 文件名称 * @param data 保存的内容 * @return 保存的文件 * @throws Exception */ public static File saveFile(File savedir, String fileName, byte[] data) throws Exception{ if(!savedir.exists()) savedir.mkdirs();//如果目录不存在就创建 File file = new File(savedir, fileName); FileOutputStream fileoutstream = new FileOutputStream(file); fileoutstream.write(data); fileoutstream.close(); return file; } /* public boolean validateFileType(String propertyName) throws Exception{ PropertyDescriptor[] propertydesc = Introspector.getBeanInfo(this.getClass()).getPropertyDescriptors(); boolean exsit = false; for(PropertyDescriptor property : propertydesc){ if(property.getName().equals(propertyName)){ exsit = true; Method method = property.getReadMethod(); if(method!=null){ FormFile formfile = (FormFile) method.invoke(this); if(formfile!=null && formfile.getFileSize()>0){ List<String> arrowType = Arrays.asList("image/bmp","image/png","image/gif","image/jpeg","image/pjpeg"); return arrowType.contains(formfile.getContentType().toLowerCase()); } }else{ new RuntimeException(propertyName+"属性的getter方法不存在"); } } } if(!exsit) new RuntimeException(propertyName+"属性不存在"); return true; }*/ } package com.sims.web.formbean.uploadfile; import org.apache.struts.upload.FormFile; import com.sims.web.formbean.BaseForm; public class UploadfileForm extends BaseForm { private FormFile uploadfile; private Integer[] fileids; public Integer[] getFileids() { return fileids; } public void setFileids(Integer[] fileids) { this.fileids = fileids; } public FormFile getUploadfile() { return uploadfile; } public void setUploadfile(FormFile uploadfile) { this.uploadfile = uploadfile; } } package com.sims.web.action.uploadfile; import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.UUID; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import org.springframework.stereotype.Controller; import com.sims.bean.uploadfile.UploadFile; import com.sims.service.uploadfile.UploadFileService; import com.sims.utils.SiteUrl; importcom.sims.web.formbean.uploadfile.UploadfileForm; @Controller("/control/uploadfile/manage") public class UploadfileManageAction extends DispatchAction { @Resource(name="uploadFileServiceBean") private UploadFileService uploadFileService; /** * 删除 */ public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UploadfileForm formbean = (UploadfileForm) form; List<String> files = uploadFileService.getFilepath(formbean.getFileids()); if(files!=null){ for(String file : files){ String realpath = request.getSession().getServletContext().getRealPath(file); File deletefile = new File(realpath); if(deletefile.exists()) deletefile.delete(); } uploadFileService.delete(UploadFile.class, (Object[])formbean.getFileids()); } request.setAttribute("message", "文件删除成功"); request.setAttribute("urladdress", SiteUrl.readUrl("control.uploadfile.list")); return mapping.findForward("message"); } /** * 上传界面 */ public ActionForward uploadUI(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("upload"); } /** * 保存上传文件 */ public ActionForward upload(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UploadfileForm formbean = (UploadfileForm) form; if(formbean.getUploadfile()!=null && formbean.getUploadfile().getFileSize()>0){ if(!UploadfileForm.validateFileType(formbean.getUploadfile())){ request.setAttribute("message", "文件格式不正确,只允许上传图片/flash动画/word文件/exe文件/pdf文件/TxT文件/xls文件/ppt文件"); return mapping.findForward("error"); } String ext = UploadfileForm.getExt(formbean.getUploadfile()); if(("gif".equals(ext) || "jpg".equals(ext) || "bmp".equals(ext) || "png".equals(ext)) && formbean.getUploadfile().getFileSize()>204800){ request.setAttribute("message", "图片不能大于200K"); return mapping.findForward("error"); } SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd/HH"); String pathdir = "/images/uploadfile/"+ dateformat.format(new Date());//构建文件保存的目录 //得到图片保存目录的真实路径 String realpathdir = request.getSession().getServletContext().getRealPath(pathdir); File savedir = new File(realpathdir); if(!savedir.exists()) savedir.mkdirs();//如果目录不存在就创建 String filename = UUID.randomUUID().toString()+ "."+ext;//构建文件名称 FileOutputStream fileoutstream = new FileOutputStream(new File(realpathdir, filename)); fileoutstream.write(formbean.getUploadfile().getFileData()); fileoutstream.close(); String path = pathdir+"/"+filename; UploadFile uploadfile = new UploadFile(path); uploadFileService.save(uploadfile); request.setAttribute("imagepath", uploadfile.getFilepath()); return mapping.findForward("uploadfinish"); }else{ request.setAttribute("error", "请上传文件"); } return mapping.findForward("message"); } }