common-upload文件上传封装

jopen 10年前

为了更方便的让每次上传进行使用,对common-upload进行了一个简单的封装。

package com.onsafe.util.upload;    /**   * 文件屬性bean   * @author lushuifa   */  public class FileBean {   private String fileName;// 文件名   private String fileContentType;// 上传文件的数据类型   private long fileSize;// 文件的大小;单位byte   private String extName;// 文件扩展名的大小   private String fieldName;   private String filePath;   private String fileNote;//文件说明   private String newFileName;//新文件名     public String getFileName() {    return fileName;   }     public void setFileName(String fileName) {    this.fileName = fileName;   }     public String getFileContentType() {    return fileContentType;   }     public void setFileContentType(String fileContentType) {    this.fileContentType = fileContentType;   }     public long getFileSize() {    return fileSize;   }     public void setFileSize(long fileSize) {    this.fileSize = fileSize;   }     public String getExtName() {    return extName;   }     public void setExtName(String extName) {    this.extName = extName;   }     public String getFilePath() {    return filePath;   }     public void setFilePath(String filePath) {    this.filePath = filePath;   }     public String getFieldName() {    return fieldName;   }     public void setFieldName(String fieldName) {    this.fieldName = fieldName;   }     public String getFileNote() {    return fileNote;   }     public void setFileNote(String fileNote) {    this.fileNote = fileNote;   }     public String getNewFileName() {    return newFileName;   }     public void setNewFileName(String newFileName) {    this.newFileName = newFileName;   }  }

[2].上传工具类 

package com.onsafe.util.upload;    import java.io.File;  import java.text.SimpleDateFormat;  import java.util.ArrayList;  import java.util.Date;  import java.util.HashMap;  import java.util.List;  import java.util.Map;    import javax.servlet.http.HttpServletRequest;    import org.apache.commons.fileupload.FileItem;  import org.apache.commons.fileupload.disk.DiskFileItemFactory;  import org.apache.commons.fileupload.servlet.ServletFileUpload;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;    import com.onsafe.util.ChineseSpelling;    /**   * 上传工具类   * @author Administrator   *   */  public class UploadTools {      protected final static Log log = LogFactory.getLog(UploadTools.class);      private HttpServletRequest request = null;   private String savePath = "";   private List<FileBean> fileBeanList = null;   //上传表单的其它信息,除file类型的input   private Map<String,String> formDatas = null;   private String uploadStatus = "";   //文件单个最大大小   private long maxSize;   //文件允许的格式为   private String allowExts;   //文件不允许的格式为   private String unAllowExts;      public void uploadFiles() {    savePath = this.getSavePath();    fileBeanList = new ArrayList<FileBean>();    formDatas    = new HashMap<String,String>();    DiskFileItemFactory factory = new DiskFileItemFactory();    ServletFileUpload upload = new ServletFileUpload(factory);    try {     List<FileItem> items = upload.parseRequest(this.getRequest());//上传文件解析     //表单元素集合     List<FileItem> formFieldList = new ArrayList<FileItem>();     //文件元素集合     List<FileItem> fileFieldList = new ArrayList<FileItem>();     if (items.size()>0) {      //将表单元素和文件元素装载到不同的集合中      for (FileItem fileItem : items) {       if (fileItem.isFormField()) {        formFieldList.add(fileItem);       } else {        fileFieldList.add(fileItem);       }      }            /**       * 分解表单元素       */      //初始化文件上传属性bean      FileBean fileBean = null;      for (FileItem fileItem : formFieldList) {       System.out.println("表单参数名:" + fileItem.getFieldName()+ ",表单参数值:" + fileItem.getString("UTF-8"));       formDatas.put(fileItem.getFieldName(), fileItem.getString("UTF-8").replace("'", "''"));       if(fileItem.getFieldName().equals("companyName")){        savePath = savePath.replace("gongsi", ChineseSpelling.getSpell(fileItem.getString("UTF-8")));       }              if(fileItem.getFieldName().toLowerCase().contains("colum")){        savePath = savePath.replace("lanmu", ChineseSpelling.getSpell(fileItem.getString("UTF-8")));       }              if(fileItem.getFieldName().equals("articleUUID")){        savePath = savePath.replace("uuid", fileItem.getString("UTF-8"));       }      }      log.info("保存的真实路径为:"+savePath);                  /**       * 分解文件元素       */      for (FileItem fileItem : fileFieldList) {       //先判断文件件域是否选择了文件        if (fileItem.getName() != null && !fileItem.getName().equals("")) {        //文件名        String fileName = fileItem.getName();        // IE 和 FireFox 下的 getName() 得出的值不同                          // IE 下得到的是文件的完整路径                          if(fileName.contains("\\")) {                              // 截取得到完整路径后的文件名                           fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);                          }        //文件大小        long fileSize = fileItem.getSize();        //检查扩展名        String extName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();                          //文件属性bean        fileBean = new FileBean();        fileBean.setFileName(fileName);        fileBean.setExtName(extName);        fileBean.setFileSize(fileSize);        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");        //文件名转拼音        String pingyingFileName = ChineseSpelling.getSpell(fileName);        String newFileName = df.format(new Date()) + "_" + pingyingFileName;                fileBean.setFilePath(savePath+newFileName);        fileBean.setFieldName(fileItem.getFieldName());        fileBean.setNewFileName(newFileName);        File f1 = new File(savePath);        if (!f1.exists()) {         f1.mkdirs();        }        System.out.println("新文件路径:"+newFileName);        File uploadedFile = new File(savePath, newFileName);        fileItem.write(uploadedFile);        // 获取根目录对应的真实物理路径        // 保存文件在服务器的物理磁盘中        System.out.println("上传文件的大小:" + fileItem.getSize());        System.out.println("上传文件的类型:" + fileItem.getContentType());        System.out.println("上传文件的名称:" + fileName);        fileBeanList.add(fileBean);        uploadStatus = "上传成功";       } else {        uploadStatus = "没有选择文件!";        }      }     }    } catch (Exception e) {     e.printStackTrace();     uploadStatus =  "上传文件失败!";    }   }        public List<FileBean> getFileBeanList() {    return fileBeanList;   }     public void setFileBeanList(List<FileBean> fileBeanList) {    this.fileBeanList = fileBeanList;   }     public HttpServletRequest getRequest() {    return request;   }     public void setRequest(HttpServletRequest request) {    this.request = request;   }     public String getSavePath() {    return savePath;   }     public void setSavePath(String savePath) {    this.savePath = savePath;   }     public Map<String, String> getFormDatas() {    return formDatas;   }     public void setFormDatas(Map<String, String> formDatas) {    this.formDatas = formDatas;   }     public String getUploadStatus() {    return uploadStatus;   }     public void setUploadStatus(String uploadStatus) {    this.uploadStatus = uploadStatus;   }     public long getMaxSize() {    return maxSize;   }     public void setMaxSize(long maxSize) {    this.maxSize = maxSize;   }     public String getAllowExts() {    return allowExts;   }     public void setAllowExts(String allowExts) {    this.allowExts = allowExts;   }     public String getUnAllowExts() {    return unAllowExts;   }     public void setUnAllowExts(String unAllowExts) {    this.unAllowExts = unAllowExts;   }  }
</div>

[3].运用工具类

// 实例化上传工具类  UploadTools uploadTools = new UploadTools();  uploadTools.setSavePath(savePath);  uploadTools.setRequest(wu.request);  uploadTools.uploadFiles();  Map<String, String> fds = uploadTools.getFormDatas();  List<FileBean> fileBeanList =uploadTools.getFileBeanList();