⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileuploadutil.java

📁 jsp + servlete + jdbc开的管理系统
💻 JAVA
字号:
package hbu.david.cmc.util;
/**
 * 通用文件上传类,对FileUpload的包装
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import hbu.david.cmc.http.ServletEncoding;
import hbu.david.cmc.util.*;
import hbu.david.cmc.bean.*;


public class FileUploadUtil {
	/**
	 * 初始化,获取FileItem的列表并返回
	 */
	public static List<FileItem> init(HttpServletRequest request,HttpServletResponse response) {
		ServletEncoding.setEncoding(request, response);
		List<FileItem> listFileItem=new ArrayList<FileItem>();
		
		//Map<String, String> fileUpInfo = new HashMap<String, String>();
		
		//List<FileItem> list = new ArrayList<FileItem>();
		FileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
		servletFileUpload.setFileSizeMax(4096 * 4096);
		try {
			// 获取request中包含的FileItems
			listFileItem = servletFileUpload.parseRequest(request);
		} catch (FileUploadException e) {
			System.out.print("size is too big ");
		}
		return listFileItem;		
	}

	/**
	 * 获取文件域信息保存在Map<String,FileItem>
	 * 
	 * @param fileItems
	 * @return
	 */
	public static Map<String, FileItem> getFile(List<FileItem> fileItems) {
		Map<String, FileItem> mapFiles = new HashMap<String, FileItem>();
		for (int i = 0; i < fileItems.size(); i++) {
			FileItem fileItem = (FileItem) fileItems.get(i);
			if (!fileItem.isFormField()) {
				// 不是表单域,就将FileItem对象直接存入Map中
				mapFiles.put(fileItem.getFieldName(), fileItem);
			}
		}
		return mapFiles;
	}

	/**
	 * 获取表单域信息,保存在Map(String,String)
	 * 
	 * @param fileItems
	 * @return
	 */
	public static Map<String, String> getField(List<FileItem> fileItems) {
		Map<String, String> mapFields = new HashMap<String, String>();
		for (int i = 0; i < fileItems.size(); i++) {
			FileItem fileItem = fileItems.get(i);
			if (fileItem.isFormField()) {
				// 表单域则取出其value值存入Map中
				try {
					mapFields.put(fileItem.getFieldName(), fileItem
							.getString("UTF-8"));
				} catch (UnsupportedEncodingException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					mapFields = null;
				}
			}
		}
		return mapFields;
	}

	/**
	 * pathDir表示目录 将获取的文件域另存为目pathDir下面
	 * 
	 * @param fileItem
	 * @param path
	 * @return
	 */
	public static String saveAs(FileItem fileItem, File pathDir) {
		String path = "";
		// 获取文件后缀
		String suffix = FileUtil.getFileSuffix(fileItem.getName());
		if (pathDir.exists()) {
			// 如果路径存在
			File file = new File(pathDir, UUID.randomUUID() + "." + suffix);
			try {
				fileItem.write(file);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();

			}
			path = file.getPath();
		} else {
			// 路径不存在先创建
			File dir = FileUtil.createFileDir(new File(pathDir.getPath()));
			File file = new File(dir, UUID.randomUUID() + "." + suffix);
			try {
				fileItem.write(file);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			path = file.getPath();
		}
		return path;
	}

	/**
	 * 把一个文件集合另存为某个路径,并将其以文件域名字,路径名方式返回Map(String,String)
	 */
	public static Map<String, String> saveAs(HttpServletRequest request,Map<String, FileItem> mapFile,
			File pathDir) {
		Map<String, String> saveAsMap = new HashMap<String, String>();
		// 获取Key值的集合并且迭代,从Map中取出FileItem
		Iterator<String> i=mapFile.keySet().iterator();
		System.out.println(mapFile.keySet());
		while(i.hasNext()) {
			//取出Map中的映射
			String fieldName = i.next();
			FileItem fileItem = mapFile.get(fieldName);
			// 将文件另存为pathDir
			String path = FileUtil.changePathToRelative(request, FileUploadUtil.saveAs(fileItem, pathDir));
			saveAsMap.put(fieldName, path);
		}
		return saveAsMap;
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -