1.用到apache的commons-fileupload-1.2.2.jar,commons-io-1.4.jar
package com.jetsum.util;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadUtil {
private List<FileItem> fileItems;
/**
* 構造函數初始化fileItems對象,保存上傳的文件信息。
* @param request
* @throws Exception
*/
@SuppressWarnings("unchecked")
public FileUploadUtil(HttpServletRequest request) throws Exception{
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart == true) {
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
setFileItems(upload.parseRequest(request));
} catch (Exception e) {
e.printStackTrace();
}
} else {
throw new Exception("the enctype must be multipart/form-data");
}
}
/**
* 將上傳的文件保存在指定目錄下,fileFiledName對應表單文件域名稱,path對應保存目錄。
* @param fileFiledName
* @param path
* @return
* @throws Exception
*/
public File saveFile(String fileFiledName,String path) throws Exception{
File file = null;
Iterator<FileItem> iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()&&!item.getName().equals("")) {
if(fileFiledName.equals(item.getFieldName())){
file = FileUtil.createNewFile(path+"/"+item.getName());
item.write(file);
}
}
}
return file;
}
/**
* 將上傳的文件全部保存在指定目錄下,path爲保存文件的目錄。
* @param path
* @throws Exception
*/
public void saveFile(String path) throws Exception{
Iterator<FileItem> iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()&&!item.getName().equals("")) {
File file = FileUtil.createNewFile(path+"/"+item.getName());
item.write(file);
}
}
}
public void setFileItems(List<FileItem> fileItems) {
this.fileItems = fileItems;
}
public List<FileItem> getFileItems() {
return fileItems;
}
}