struts2实现文件上传

来源:互联网 发布:web项目压缩js 编辑:程序博客网 时间:2024/06/15 23:01
package com.sys.volunteer.adinfo;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection;import java.util.Date;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject;import org.apache.commons.lang.StringUtils;import org.apache.struts2.ServletActionContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.sys.volunteer.baseaction.BaseAction;import com.sys.volunteer.common.Const;@Controller/* Controller为了把Action交给Spring管理 */@Scope("prototype")public class UploadFileAction extends BaseAction{// 保存文件的目录路径(通过依赖注入)//private String savePath = "D:/tomcat-6.0.29/webapps/VolunteerManage/";private static final int BUFFER_SIZE = 16 * 1024;private File upload;private String uploadContentType;private String uploadFileName;private String imgTitle;private String imgBorder;private String imgWidth;private String imgHeight;private String align;private String siteType;public String getImgWidth() {return imgWidth;}public void setImgWidth(String imgWidth) {this.imgWidth = imgWidth;}public String getImgHeight() {return imgHeight;}public void setImgHeight(String imgHeight) {this.imgHeight = imgHeight;}public String getAlign() {return align;}public void setAlign(String align) {this.align = align;}public String getImgTitle() {return imgTitle;}public void setImgTitle(String imgTitle) {this.imgTitle = imgTitle;}public String getImgBorder() {return imgBorder;}public void setImgBorder(String imgBorder) {this.imgBorder = imgBorder;}public File getUpload() {return upload;}public void setUpload(File upload) {this.upload = upload;}public String getUploadContentType() {return uploadContentType;}public void setUploadContentType(String uploadContentType) {this.uploadContentType = uploadContentType;}public String getUploadFileName() {return uploadFileName;}public void setUploadFileName(String uploadFileName) {this.uploadFileName = uploadFileName;}// 自己封装的一个把源文件对象复制成目标文件对象private static boolean copy(File src, File dst) {boolean result = false;InputStream in = null;OutputStream out = null;try {in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);out = new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);byte[] buffer = new byte[BUFFER_SIZE];int len = 0;while ((len = in.read(buffer)) > 0) {out.write(buffer, 0, len);}result = true;} catch (Exception e) {e.printStackTrace();result = false;} finally {if (null != in) {try {in.close();} catch (IOException e) {e.printStackTrace();}}if (null != out) {try {out.close();} catch (IOException e) {e.printStackTrace();}}}return result;}//上传图片public String execute() throws Exception {File srcFiles = this.getUpload();Long fileSize = 0L;if(srcFiles != null){fileSize = srcFiles.length();}List<String> successFileList = new ArrayList<String>();Long testtime = System.currentTimeMillis();SimpleDateFormat fm2 = new SimpleDateFormat("yyyyMMdd");String folder = fm2.format(testtime);String filepath = getRealyPath("/upload/pictures/" + folder + "/");if (!new java.io.File(filepath).exists()){new java.io.File(filepath).mkdirs();}SimpleDateFormat fm = new SimpleDateFormat("yyyyMMddhhmmsss");String filename = fm.format(testtime);String fileExt = getUploadFileName().substring(getUploadFileName().lastIndexOf("."));getHttpServletResponse().setContentType("text/html; charset=UTF-8");StringBuffer buffer=new StringBuffer();if (fileExt.equalsIgnoreCase(".jsp") || fileExt.equalsIgnoreCase(".exe") || fileExt.equalsIgnoreCase(".js") || fileExt.equalsIgnoreCase(".asp") || fileExt.equalsIgnoreCase(".aspx") || fileExt.equalsIgnoreCase(".html") || fileExt.equalsIgnoreCase(".sql") || fileExt.equalsIgnoreCase(".class")) {buffer.append("<script type='text/javascript'>");buffer.append("alert('文件格式不正确,请重新上传!');history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null;}if("addMagic".equals(siteType)){    if(!fileExt.equalsIgnoreCase(".jpg")&&!fileExt.equalsIgnoreCase(".gif")){    buffer.append("<script type='text/javascript'>");buffer.append("alert('文件格式不正确,请重新上传!');history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null;    }else if(fileSize > Const.MaxPictureSize){    buffer.append("<script type='text/javascript'>");buffer.append("alert('文件大小超过5M,请重新上传!');history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null;    } }File dstFile = new File(filepath+"\\"+filename+fileExt);if (copy(srcFiles, dstFile)) {successFileList.add(getUploadFileName());}getHttpServletRequest().setAttribute("successFileList", successFileList);String imgurl="/upload/pictures/"+folder+"/"+filename+fileExt;buffer.append("<script type='text/javascript'>");buffer.append("alert('上传文件成功!');parent.document.myform.imgurl.value='"+ imgurl +"';history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null;}//上传文件public String uploadFile() throws Exception {File srcFiles = this.getUpload();Long fileSize = 0L;if(srcFiles != null){fileSize = srcFiles.length();}List<String> successFileList = new ArrayList<String>();Long testtime = System.currentTimeMillis();SimpleDateFormat fm2 = new SimpleDateFormat("yyyyMMdd");String folder = fm2.format(testtime);String filepath = getRealyPath("/upload/file/" + folder + "/");if (!new java.io.File(filepath).exists()){new java.io.File(filepath).mkdirs();}SimpleDateFormat fm = new SimpleDateFormat("yyyyMMddhhmmsss");String filename = fm.format(testtime);String fileExt = getUploadFileName().substring(getUploadFileName().lastIndexOf("."));getHttpServletResponse().setContentType("text/html; charset=UTF-8");StringBuffer buffer=new StringBuffer();if (fileExt.equalsIgnoreCase(".doc") || fileExt.equalsIgnoreCase(".docs") || fileExt.equalsIgnoreCase(".docx")|| fileExt.equalsIgnoreCase(".txt") || fileExt.equalsIgnoreCase(".xls") || fileExt.equalsIgnoreCase(".xlsx") || fileExt.equalsIgnoreCase(".ppt") || fileExt.equalsIgnoreCase(".ppts") || fileExt.equalsIgnoreCase(".jpg")|| fileExt.equalsIgnoreCase(".jpeg") || fileExt.equalsIgnoreCase(".png")|| fileExt.equalsIgnoreCase(".gif") || fileExt.equalsIgnoreCase(".mp3")|| fileExt.equalsIgnoreCase(".mp4")|| fileExt.equalsIgnoreCase(".m4v")|| fileExt.equalsIgnoreCase(".f4v") || fileExt.equalsIgnoreCase(".webm")|| fileExt.equalsIgnoreCase(".flv")|| fileExt.equalsIgnoreCase(".aac")|| fileExt.equalsIgnoreCase(".ogg")|| fileExt.equalsIgnoreCase(".oga")|| fileExt.equalsIgnoreCase(".swf")) {if(fileSize > Const.MaxFileSize){    buffer.append("<script type='text/javascript'>");buffer.append("alert('文件大小超过20M,请重新上传!');history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null;     }    try{File dstFile = new File(filepath+"\\"+filename+fileExt);if (copy(srcFiles, dstFile)) {successFileList.add(getUploadFileName());}getHttpServletRequest().setAttribute("successFileList", successFileList);String imgurl="/upload/file/"+folder+"/"+filename+fileExt;buffer.append("<script type='text/javascript'>");buffer.append("alert('上传文件成功!');parent.document.myform.fileurl.value='"+ imgurl +"';parent.document.myform.fileName.value='"+getUploadFileName()+"';history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());   }catch (Exception e) {e.printStackTrace(System.err);buffer.append("<script type='text/javascript'>");buffer.append("alert('文件上传异常,请重新上传!');history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null; }}else{buffer.append("<script type='text/javascript'>");buffer.append("alert('文件格式不正确,请重新上传!');history.back();");buffer.append("</script>");getHttpServletResponse().getWriter().print(buffer.toString());return null;}return null;}//文件下载public  String downFile() {java.io.BufferedInputStream bis = null;java.io.BufferedOutputStream bos = null;try {String fileurl= this.getHttpServletRequest().getParameter("fileUrl").replaceAll("\\\\", "/");;String fileUrl = this.getHttpServletRequest().getSession().getServletContext().getRealPath("/")+fileurl.substring(1);String name = this.getHttpServletRequest().getParameter("fileName");String userAgent = this.getHttpServletRequest().getHeader("User-Agent");           byte[] bytes = userAgent.contains("MSIE") ? name.getBytes() : name.getBytes("UTF-8"); // name.getBytes("UTF-8")处理safari的乱码问题           String fileName = new String(bytes, "ISO-8859-1"); // 客户使用保存文件的对话框:// fileUrl = "D:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\VolunteerManager\\upload\\file\\20140220\\201402200531011.txt";//String fileName = "201402200531011.txt"; fileUrl = new String(fileUrl.getBytes("utf-8"), "utf-8");this.getHttpServletResponse().setContentType("application/x-msdownload");this.getHttpServletResponse().setCharacterEncoding("utf-8");this.getHttpServletResponse().setHeader("Content-disposition", "attachment; filename="+ fileName);// 通知客户文件的MIME类型:bis = new java.io.BufferedInputStream(new java.io.FileInputStream((fileUrl)));bos = new java.io.BufferedOutputStream(this.getHttpServletResponse().getOutputStream());byte[] buff = new byte[2048];int bytesRead;int i = 0;while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {bos.write(buff, 0, bytesRead);i++;}bos.flush();} catch (Exception e) {e.printStackTrace();} finally {if (bis != null) {try {bis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}bis = null;}if (bos != null) {try {bos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}bos = null;}}        return null;    }//编辑器上传public String uploadEdit() throws Exception {String fileExt = getUploadFileName().substring(getUploadFileName().lastIndexOf("."));JSONObject obj = new JSONObject();if (fileExt.equalsIgnoreCase(".doc") || fileExt.equalsIgnoreCase(".docs")|| fileExt.equalsIgnoreCase(".txt") || fileExt.equalsIgnoreCase(".xls") || fileExt.equalsIgnoreCase(".xlsx") || fileExt.equalsIgnoreCase(".ppt") || fileExt.equalsIgnoreCase(".ppts") || fileExt.equalsIgnoreCase(".jpg")|| fileExt.equalsIgnoreCase(".jpeg") || fileExt.equalsIgnoreCase(".png")|| fileExt.equalsIgnoreCase(".gif") || fileExt.equalsIgnoreCase(".mp3")|| fileExt.equalsIgnoreCase(".mp4")|| fileExt.equalsIgnoreCase(".m4v")|| fileExt.equalsIgnoreCase(".f4v") || fileExt.equalsIgnoreCase(".webm")|| fileExt.equalsIgnoreCase(".flv")|| fileExt.equalsIgnoreCase(".aac")|| fileExt.equalsIgnoreCase(".ogg")|| fileExt.equalsIgnoreCase(".oga")|| fileExt.equalsIgnoreCase(".swf")){File srcFiles = this.getUpload();List<String> successFileList = new ArrayList<String>();Long testtime = System.currentTimeMillis();SimpleDateFormat fm2 = new SimpleDateFormat("yyyyMMdd");String folder = super.getHttpServletRequest().getParameter("folder");if(StringUtils.isEmpty(folder)){folder = fm2.format(testtime);}String filepath = getRealyPath("/upload/" + folder + "/");if (!new java.io.File(filepath).exists()) {new java.io.File(filepath).mkdirs();}SimpleDateFormat fm = new SimpleDateFormat("yyyyMMddhhmmsss");String filename = fm.format(testtime);File dstFile = new File(filepath + "\\" + filename + fileExt);if (copy(srcFiles, dstFile)) {successFileList.add(getUploadFileName());}// getHttpServletRequest().setAttribute("successFileList",// successFileList);String imgurl = getHttpServletRequest().getContextPath() + "/upload/" + folder + "/" + filename + fileExt;obj.element("error", 0);obj.element("url", imgurl);this.writeAjaxStr(obj.toString());return null;} else {obj.element("error", -3);obj.element("message", "文件格式不正确,请重新上传!");this.writeAjaxStr(obj.toString());return null;}}public HttpServletRequest getHttpServletRequest() {return ServletActionContext.getRequest();}public ServletContext getServletContext() {return ServletActionContext.getServletContext();}public HttpServletResponse getHttpServletResponse() {return ServletActionContext.getResponse();}public String getRealyPath(String path) {return getServletContext().getRealPath(path);}public String getSiteType() {return siteType;}public void setSiteType(String siteType) {this.siteType = siteType;}}


                                             
0 0
原创粉丝点击