该程序用到2个包commons-fileupload-1.2.1.jar 和commons-io-1.3.2.jar请去apache官网下载 import java.io.File; import java.util.List; 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; public class Upload { public void upload(String filePath,String servicePath,HttpServletRequest request) throws Exception { // 创建工厂。然后再通过工厂来设置两个相关的属性 // Create a factory for disk-based file items // DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTempDirectory); DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置小于1MB的文件就放到内存中,大于等于1MB则写到磁盘中 // Set yourMaxMemorySize factory.setSizeThreshold(1024 * 1024); // 设置临时存储目录 // Set yourTempDirectory factory.setRepository(new File(filePath)); // 通过工厂生成类的实例 // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // 设置允许用户上传文件大小, 单位:字节 // Set overall request size constraint // factory.setSizeMax(yourMaxRequestSize); try { // parse是解析的意思,parseRequest也就是解析传过来的内容 // 调用ServletFileUpload类的parseRequest()方法获取所上传的所有文件和参数的集合 // Parse the request List list = upload.parseRequest(request); //遍历list对象中的每个FileItem对象,FileItem对象代表表单参数和所上传的文件 //然后判断它到底是不是File类型的 for (int i = 0; i < list.size(); i++) { FileItem item = (FileItem)list.get(i); // Process a regular form field if (item.isFormField()) { String name = item.getFieldName();//获得字段的名字 String value = item.getString("UTF-8");//使用指定编码获得字段的值 System.out.println("form field name:" + name); System.out.println("form field value:" + value); } else { // Process a file upload // If you want to process a file upload in memory, you can use code as: byte[] data = item.get(); if (null!=item.getName() && !"".equals(item.getName())) { //通过FileItem对象的getName()方法所获取的是上传文件在客户端的包含后缀的完整名称 //并且FileItem对象的getSize()、getContentType()可以获取所上传的文件的大小和类型 System.out.println("上传文件的名称:" + item.getName()); System.out.println("上传文件的大小:" + item.getSize()); System.out.println("上传文件的类型:" + item.getContentType()); System.out.println("-------------------------------------------------"); String value = item.getName(); int start = value.lastIndexOf("//"); String fileName = value.substring(start + 1); //使用FileItem对象writer()方法完成最终的上传文件的保存 item.write(new File(filePath, fileName)); //用于在result.jsp中显示所上传的文件名称 } } } } catch (Exception ex) { ex.printStackTrace(); } } }