最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

common-upload上傳文件功能封裝類分享

 更新時間:2014年01月09日 09:06:44   作者:  
本文介紹一個common-upload上傳封裝類,為了更方便的上傳文件,對common-upload進行了一個簡單的封裝,大家參考使用吧

文件屬性bean

復(fù)制代碼 代碼如下:

package com.onsafe.util.upload;

/**
 * 文件屬性bean
 * @author lushuifa
 */
public class FileBean {
 private String fileName;// 文件名
 private String fileContentType;// 上傳文件的數(shù)據(jù)類型
 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;
 }
}

上傳工具類

復(fù)制代碼 代碼如下:

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("表單參數(shù)名:" + fileItem.getFieldName()+ ",表單參數(shù)值:" + 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");
      //文件名轉(zhuǎn)拼音
      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);
      // 獲取根目錄對應(yīng)的真實物理路徑
      // 保存文件在服務(wù)器的物理磁盤中
      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;
 }
}

運用工具類

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • Spring MessageSource獲取消息不符合預(yù)期的問題解決方案

    Spring MessageSource獲取消息不符合預(yù)期的問題解決方案

    最近我參與的產(chǎn)品要做國際化支持,選擇了用Spring MessageSource來實現(xiàn),這個Spring 框架提供的工具使用很簡單,網(wǎng)上有各種教程文章,這里不做贅述,只說一個實際遇到的問題及解決方案,需要的朋友可以參考下
    2024-01-01
  • springboot jdbctemplate如何實現(xiàn)多數(shù)據(jù)源

    springboot jdbctemplate如何實現(xiàn)多數(shù)據(jù)源

    這篇文章主要介紹了springboot jdbctemplate如何實現(xiàn)多數(shù)據(jù)源問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java實現(xiàn)Web應(yīng)用中的定時任務(wù)(實例講解)

    Java實現(xiàn)Web應(yīng)用中的定時任務(wù)(實例講解)

    下面小編就為大家分享一篇Java實現(xiàn)Web 應(yīng)用中的定時任務(wù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • SpringBoot通過請求對象獲取輸入流無數(shù)據(jù)

    SpringBoot通過請求對象獲取輸入流無數(shù)據(jù)

    這篇文章主要介紹了使用SpringBoot通過請求對象獲取輸入流無數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中的JScrollPane使用詳細(xì)說明

    Java中的JScrollPane使用詳細(xì)說明

    這篇文章主要給大家介紹了關(guān)于Java中JScrollPane使用的相關(guān)資料,Java JScrollPane是Swing庫提供的一個組件,用于在需要滾動的區(qū)域中顯示內(nèi)容,需要的朋友可以參考下
    2024-07-07
  • Spring-webflux?響應(yīng)式編程的實例詳解

    Spring-webflux?響應(yīng)式編程的實例詳解

    Spring 提供了兩個并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲庫,這篇文章主要介紹了Spring-webflux?響應(yīng)式編程,需要的朋友可以參考下
    2022-09-09
  • Java泛型變量如何添加約束

    Java泛型變量如何添加約束

    這篇文章主要介紹了Java泛型變量如何添加約束,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java語法糖之個數(shù)可變的形參的實現(xiàn)

    Java語法糖之個數(shù)可變的形參的實現(xiàn)

    這篇文章主要介紹了Java語法糖之個數(shù)可變的形參的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • JDK9的新特性之String壓縮和字符編碼的實現(xiàn)方法

    JDK9的新特性之String壓縮和字符編碼的實現(xiàn)方法

    這篇文章主要介紹了JDK9的新特性之String壓縮和字符編碼的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Go?Java算法猜數(shù)字游戲示例詳解

    Go?Java算法猜數(shù)字游戲示例詳解

    這篇文章主要為大家介紹了Go?Java算法猜數(shù)字游戲示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論

宜川县| 龙门县| 肇州县| 正定县| 仙游县| 简阳市| 巩义市| 米泉市| 桃源县| 岳西县| 永善县| 漳平市| 友谊县| 黎城县| 东兴市| 通山县| 浦城县| 东兰县| 买车| 万源市| 灵丘县| 泗水县| 和硕县| 菏泽市| 呼图壁县| 安徽省| 潮安县| 广汉市| 攀枝花市| 富源县| 勐海县| 儋州市| 巴南区| 泰兴市| 株洲市| 紫金县| 正镶白旗| 盐池县| 专栏| 临桂县| 保定市|