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