当前位置:  编程技术>java/j2ee

common-upload上传文件功能封装类分享

    来源: 互联网  发布时间:2014-10-31

    本文导语:  文件屬性bean 代码如下:package com.onsafe.util.upload; /** * 文件屬性bean * @author lushuifa */public class FileBean { private String fileName;// 文件名 private String fileContentType;// 上传文件的数据类型 private long fileSize;// 文件的大小;单位byte private S...

文件屬性bean

代码如下:

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

上传工具类

代码如下:

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 fileBeanList = null;
 //上传表单的其它信息,除file类型的input
 private Map formDatas = null;
 private String uploadStatus = "";
 //文件单个最大大小
 private long maxSize;
 //文件允许的格式为
 private String allowExts;
 //文件不允许的格式为
 private String unAllowExts;

 public void uploadFiles() {
  savePath = this.getSavePath();
  fileBeanList = new ArrayList();
  formDatas    = new HashMap();
  DiskFileItemFactory factory = new DiskFileItemFactory();
  ServletFileUpload upload = new ServletFileUpload(factory);
  try {
   List items = upload.parseRequest(this.getRequest());//上传文件解析
   //表单元素集合
   List formFieldList = new ArrayList();
   //文件元素集合
   List fileFieldList = new ArrayList();
   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 getFileBeanList() {
  return fileBeanList;
 }

 public void setFileBeanList(List 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 getFormDatas() {
  return formDatas;
 }

 public void setFormDatas(Map 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;
 }
}

运用工具类

代码如下:

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

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3