1.创建一个Servlet----Upload.java文件,用于实现上传文件
import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
public class Upload extends HttpServlet {
private String uploadPath = \"d:\\\d\\\\\"; // 上传文件的目录 private String tempPath = \"d:\\\d\\\mp\\\\\"; // 临时文件目录
在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。以下是示例代码:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final long MAX_SIZE = 3 * 1024 * 1024;// 设置上传文件最大为 3M response.setContentType(\"text/html\");
// 设置字符编码为UTF-8, 这样支持汉字显示 response.setCharacterEncoding(\"UTF-8\");
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
dfif.setRepository(new File(request.getRealPath(\"/\")
+ \"/WEB-INF/ImagesUploadTemp\"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
// 用以上工厂实例化上传组件
ServletFileUpload sfu = new ServletFileUpload(dfif); // 设置最大上传尺寸
sfu.setSizeMax(MAX_SIZE);
PrintWriter out = response.getWriter(); // 从request得到 所有 上传域的列表 List fileList = null; try {
fileList = sfu.parseRequest(request); } catch (Exception e) { e.printStackTrace();
}
// 得到所有上传的文件
Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件
fileItem = (FileItem) fileItr.next();
// 忽略简单form字段而不是上传域的文件域(等) if (fileItem == null || fileItem.isFormField()) { continue; }
// 得到文件的完整路径 path = fileItem.getName(); // 得到文件的大小 size = fileItem.getSize(); // 得到去除路径的文件名
String t_name = path.substring(path.lastIndexOf(\"\\\\\") + 1); // 得到文件的扩展名(无扩展名时将得到全名)
String t_ext = t_name.substring(t_name.lastIndexOf(\".\") + 1); long now = System.currentTimeMillis(); // 根据系统时间生成上传后保存的文件名 String prefix = String.valueOf(now);
// 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下 String u_name = request.getRealPath(\"/\")+\"/WEB-INF/upload/\" + prefix + \".\" + t_ext; try {
// 保存文件
fileItem.write(new File(u_name));
out.println(\"文件上传成功. 已保存为: \" + prefix + \".\" + t_ext + \" 文件大小: \" + size + \"字节
\"); } catch (Exception e) { e.printStackTrace(); } } }编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat\\common\\lib\\servlet-api.jar。
2.配置servlet,用记事本打开tomcat\\webapps\\你的webapp\\WEB-INF\\web.xml,没有的话新建一个。
典型配置如下:
PUBLIC \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\" \"http://java.sun.com/dtd/web-app_2_3.dtd\">
3.配置好servlet后,启动tomcat,写一个简单的html测试:
注意action=\"fileupload\"其中fileupload是配置servlet时指定的url-pattern
因篇幅问题不能全部显示,请点此查看更多更全内容