Java上傳

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章