<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK" import="java.io.*" import="java.util.*" import="com.amarsoft.are.*" import="org.apache.commons.fileupload.*" import="org.apache.commons.fileupload.disk.*" import="org.apache.commons.fileupload.servlet.*" %> 上传文件 <% if(FileUpload.isMultipartContent(request)){ //上传处理接收 DiskFileItemFactory factory = new DiskFileItemFactory(); //Create a factory for disk-based file items factory.setSizeThreshold(102400); //大于100K的文件,需要缓冲 ServletFileUpload upload = new ServletFileUpload(factory);//Create a new file upload handler upload.setSizeMax(-1); //Set overall request size constraint List items = upload.parseRequest(request); Iterator iter = items.iterator(); File saveTo = null; //get folder String folder = null; while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) continue; if (item.getFieldName().equals("folder")) { folder = item.getString(); break; } } if(folder==null){ out.println("上传文件的位置参数不正确!"); }else{ folder = java.net.URLDecoder.decode(folder,"GBK"); File fd = new File(folder); if(!(fd.exists() && fd.isDirectory())){ out.println("上传文件的位置不存在!"); return; }else{ //保存文件 iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) continue; String fileName = item.getName(); //可以大胆的假定上传的文件都来自于windows系统,因此可以用\分割 String fn[] = fileName.split("\\\\"); fileName = fn[fn.length-1]; try{ saveTo = new File(fd,fileName); item.write(saveTo); }catch(Exception ex){ out.println("上传文件\""+fileName+"\"失败!"); out.println("

错误原因:"+ex.getMessage()); } break; } } } %> 上传文件"<%=saveTo.getName()%>"成功! <% }else{//非上传文件接收,显示文件浏览的画面 String folder = request.getParameter("folder"); if(folder==null){ out.println("上传文件的参数不正确!"); }else{ %>

请选择要上传的文件:

<%} %> <% } %>