文件上传笔记

 
 
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");
	}
}




你可能感兴趣的:(exception,String,properties,File,null,Integer)