common-upload文件上傳封裝

jopen 10年前發布 | 15K 次閱讀 文件上傳 common-upload

為了更方便的讓每次上傳進行使用,對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;
    

    } }</pre>

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

}</pre>

</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();
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!