从网上下载commons-fileupload-1.3.1,commons-io-2.4两个jar包
1) 确定本次请求是否是文件上传请求
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
2) 创建文件上传的工厂对象
FileItemFactory factory=new DiskFileItemFactory();
3) 创建ServletFileUpload对象,并将工厂对象作为参数传入
ServletFileUpload upload=new ServletFileUpload(factory);
4) 使用上传对象从请求对象中解析出提交的所有表单元素
List<FileItem> lstForms=upload.parseRequest(request);
5) 遍历表单元素集合,实现取出表单元素和上传文件
for (FileItem fileItem : lstForms) { //判断每一个表单元素是否是普通表单 if(fileItem.isFormField()){ System.out.println(fileItem.getString("UTF-8")); }else{ //上传前准备工作 //a、上传后的路径this.getServletContext().getRealPath("/")会出去当前项目在 部署的服务器上的绝对路径 String path=this.getServletContext().getRealPath("/")+"files/"; //b、找出要上传的文件的名字 String fileName=fileItem.getName(); fileName=fileName.substring(fileName.lastIndexOf("\\")+1); //c、上传 fileItem.write(new File(path+fileName)); out.println("<h2>"+fileName+"上传成功!</h2>"); }
5)实际应用中的代码
String savePath = request.getSession().getServletContext().getRealPath("/") + "upload/";
for (FileItem item : fileItems) { if (item.isFormField()) { if ("choose".equals(item.getFieldName())) { choose = item.getString("UTF-8"); System.out.println(choose); }else if ("title".equals(item.getFieldName())) { title = item.getString("UTF-8"); System.out.println(title); } else if("content".equals(item.getFieldName())){ content = item.getString("UTF-8"); System.out.println(content); }else{ String s = item.getString("UTF-8"); System.out.println(s); } }else{ fileName = item.getName(); String pictures_url = null; File file = new File(savePath + "/"); if (!file.exists()) { file.mkdirs(); } String wirteFile_url = savePath + "/" + fileName; File wirteFile = new File(wirteFile_url); item.write(wirteFile);