html:file 参考”struts学习笔记.doc” 自编的一个的文件上传类 com.cn.rolia.util.struts.upload .UploadUtil.java package com.cn.rolia.util.struts.upload; import org.apache.struts.upload.FormFile; import java.io.BufferedOutputStream; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashSet; import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * * @author rolia * */ public class UploadUtil { /* * FormFile,表示要上传的文件 */ FormFile file; /** * 保存目录 */ String savePath; /** * 文件大小 */ int fileSize; /** * 上传文件的最大值,单位为 byte */ int sizeLimited; /** * 文件名 */ String fileName; /** * 文件类型 */ String fileType; /** * 允许的文件类型 */ HashSet allowedExt; public UploadUtil(FormFile file){ this.file = file; this.fileSize=file.getFileSize(); this.fileName=file.getFileName(); this.fileType=file.getContentType(); this.savePath = null; allowedExt = null; this.sizeLimited = 0; } public UploadUtil(FormFile file,String savePath){ this.file = file; this.fileSize=file.getFileSize(); this.fileName=file.getFileName(); this.fileType=file.getContentType(); this.savePath = savePath; allowedExt = null; this.sizeLimited = 0; } public UploadUtil(FormFile file,String savePath,HashSet allowedExt){ this.file = file; this.fileSize=file.getFileSize(); this.fileName=file.getFileName(); this.fileType=file.getContentType(); this.savePath = savePath; this.allowedExt = allowedExt; this.sizeLimited = 0; } public UploadUtil(FormFile file,String savePath,HashSet allowedExt,int sizeLimited){ this.file = file; this.fileSize=file.getFileSize(); this.fileName=file.getFileName(); this.fileType=file.getContentType(); this.savePath = savePath; this.allowedExt = allowedExt; this.sizeLimited = sizeLimited; } public UploadUtil(FormFile file,String savePath,HashSet allowedExt,int sizeLimited,String fileName){ this.file = file; this.fileSize=file.getFileSize(); this.fileName=fileName; this.fileType=file.getContentType(); this.savePath = savePath; this.sizeLimited = sizeLimited; this.allowedExt = allowedExt; } /** * 保存文件操作。 * 以下情况会抛出异常: * 1。 上传文件的类型不允许 * 2。 上传文件的大小超出允许的最大值 * 3。 没有指定文件的保存路径 * 4。 指定的文件保存路径不存在 * 5。 服务器上已有与上传文件同名的文件 * 6。 IO错误 * @throws Exception 文件保存过程中出现的异常。 */ public void writeFile()throws Exception{ Log log = LogFactory.getLog(UploadUtil.class); //过滤上传文件的类型 if(allowedExt==null){ log.info("Allow all types of file being uploaded!"); }else{ boolean flag = false; Iterator iterator = allowedExt.iterator(); while(iterator.hasNext() && flag==false){ flag = this.fileName.endsWith(iterator.next().toString()); } if(flag==false){ log.warn("The type of file \""+this.fileName+"\" is firbided!"); throw new UploadException("The type of file \""+this.fileName+"\" is firbided!"); } } //设置允许上传文件的最大值 if((sizeLimited!=0) && (this.fileSize > this.sizeLimited)){ log.warn("The file is greater than "+this.sizeLimited+"bytes"); throw new UploadException("The file is greater than "+this.sizeLimited+"bytes"); } //检查是否指定了保存路径 if(savePath==null){ log.error("The destination file being saved is not assigned!"); throw new UploadException("The destination file being saved is not assigned!"); } //检查指定的路径是否存在 File saveFile = new File(savePath+"\\"+this.fileName); if(!saveFile.getParentFile().exists()){ log.error("The Directory: "+savePath+" is not exists!"); throw new UploadException("The Directory: \""+savePath+"\" is not exists!"); } //检查服务器里是否已经存在此上传的文件 if(saveFile.exists()){ log.error("The file: "+saveFile.getPath()+" has existed!"); throw new UploadException("The file: \""+saveFile.getPath()+"\" has existed!"); } //开始上传 InputStream in = null; OutputStream out = null; try{ in = new BufferedInputStream(file.getInputStream()); out = new BufferedOutputStream(new FileOutputStream(saveFile)); int b; while((b=in.read())!=-1){ out.write((char)b); } }catch(IOException e){ log.error(e.getMessage()); throw new IOException(e.getMessage()); } finally{ try{ if(out!=null)out.close(); if(in!=null)in.close(); }catch(IOException e){ log.error(e.getMessage()); throw new IOException(e.getMessage()); } } file.destroy(); log.info("File \""+saveFile.getPath()+"\" has been saved successfully!"); } public HashSet getAllowedExt() { return allowedExt; } public FormFile getFile() { return file; } public String getFileName() { return fileName; } public int getFileSize() { return fileSize; } public String getFileType() { return fileType; } public int getSizeLimited() { return sizeLimited; } public String getSavePath() { return savePath; } public void setAllowedExt(HashSet allowedExt) { this.allowedExt = allowedExt; } public void setFileName(String fileName) { this.fileName = fileName; } public void setSizeLimited(int sizeLimited) { this.sizeLimited = sizeLimited; } public void setSavePath(String savePath) { this.savePath = savePath; } }

评论