Servlet文件上传_hanCSDN_20121215

来源:互联网 发布:微信模板发送java 编辑:程序博客网 时间:2024/06/05 16:50

Servlet实现上传文件

用到的jar包:commons-fileupload-1.2.2.jar和commons-io-2.4.jar两个包。

前台index.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Servlet实现上传文件</title></head><body><form action="uploadservlet" method="post" enctype="MULTIPART/FORM-DATA" ><input type="file"  name="file1" size="30"/><input type="submit" name="sc" value="上传"></form></body></html>

 

web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  <display-name>upload</display-name>        <!-- 上传 -->  <servlet>  <servlet-name>UpLoadServlet</servlet-name>  <servlet-class>com.servlet.UpLoadServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>UpLoadServlet</servlet-name>  <url-pattern>/uploadservlet</url-pattern>  </servlet-mapping>      <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list></web-app>

后台UpLoadServlet.java

import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpLoadServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 1.fileUpload(req);// 2.// 3.}// 上传文件private void fileUpload(HttpServletRequest req) {try {DiskFileItemFactory diskFactory = new DiskFileItemFactory();// threshold 极限、临界值,即硬盘缓存 1MdiskFactory.setSizeThreshold(4 * 1024);// repository 贮藏室,即临时文件目录File tempFolder = new File(this.getServletContext().getRealPath("/") + "/tempfolder");// 如果临时文件目录不存在,就创建一个临时文件目录if (!tempFolder.exists() && !tempFolder.isDirectory()) {tempFolder.mkdir();}diskFactory.setRepository(tempFolder);ServletFileUpload upload = new ServletFileUpload(diskFactory);// 设置允许上传的最大文件大小 4Mupload.setSizeMax(4 * 1024 * 1024);// 解析HTTP请求消息头List fileItems = upload.parseRequest(req);Iterator iter = fileItems.iterator();while (iter.hasNext()) {FileItem item = (FileItem) iter.next();if (!item.isFormField()) {// 处理上传的文件String ksxxfilepath = processUploadFile(item);System.out.println(ksxxfilepath);} else {// 处理表单内容processFormField(item);}}} catch (Exception e) {// 使用 fileupload 包时发生异常e.printStackTrace();}}// 处理表单内容private void processFormField(FileItem item) throws Exception {String name = item.getFieldName();String value = item.getString();System.out.println(name+value);}// 处理上传的文件private String processUploadFile(FileItem item) throws Exception {// 此时的文件名包含了完整的路径,得注意加工一下String filename = item.getName();int index = filename.lastIndexOf("\\");//截取到文件名filename = filename.substring(index + 1, filename.length());long fileSize = item.getSize();if ("".equals(filename) && fileSize == 0) {return "";}File tempfiles = new File(this.getServletContext().getRealPath("/")+ "/tempfiles");if (!tempfiles.exists() && !tempfiles.isDirectory()) {tempfiles.createNewFile();}File uploadFile = new File(this.getServletContext().getRealPath("/")+ "/tempfiles" + "/" + filename);item.write(uploadFile);// 文件保存完毕return uploadFile.getPath();}}