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