ybhuxiao 发表于 2013-2-7 14:47:57

学习使用Commons的FileUpload组件

刚弄了一个基础的,还在学习中。。。还望前辈们多多指教

刚看到user guide,那个Watching progress还是不太懂,所以没有用上

参见http://commons.apache.org/fileupload/index.html

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><servlet>      <servlet-name>InvokerServlet</servlet-name>      <servlet-class>          org.apache.catalina.servlets.InvokerServlet      </servlet-class>      <init-param>            <param-name>debug</param-name>            <param-value>0</param-value>      </init-param>      <load-on-startup>2</load-on-startup>    </servlet>      <servlet-mapping>      <servlet-name>InvokerServlet</servlet-name>      <url-pattern>/servlet/*</url-pattern>    </servlet-mapping><welcome-file-list>    <welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>


upload.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>    <title>upload.htm</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=gbk"></head>    <body><form name="form" action="/servlet/com.djwl.servlet.upload" method="post" enctype="multipart/form-data"><br>请选择要上传的文件:<br><input type="file" name="file0"><br><input type="file" name="file1"><br><input type="file" name="file2"><br><input type="text" name="username"><br><input type="text" name="password"><br><input type="submit" value="确定"></form></body></html>


upload.java

package com.djwl.servlet;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.lang.StringUtils;import com.djwl.core.utils.DateUtil;import com.djwl.core.utils.StringUtil;public class upload extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("gbk");response.setCharacterEncoding("gbk");response.setContentType("text/html;charset=gbk");PrintWriter out = response.getWriter();// Check that we have a file upload requestboolean isMultipart = ServletFileUpload.isMultipartContent(request);// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();// Set factory constraintsfactory.setSizeThreshold(2*1024*1024);//2MBString userfilepath = request.getRealPath("userfile/"+DateUtil.getCurrentDate8());factory.setRepository(new File(userfilepath));// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Set overall request size constraintupload.setSizeMax(50*1024*1024);//50MBtry {// Parse the requestList /* FileItem */ items = upload.parseRequest(request);// Process the uploaded itemsIterator iter = items.iterator();while (iter.hasNext()) {    FileItem item = (FileItem) iter.next();    if (item.isFormField()) {    String name = item.getFieldName();    String value = item.getString();    System.out.println(name + ":" + value);    } else {    // Process a file upload      String fieldName = item.getFieldName();      String fileName = item.getName();      if(StringUtils.isBlank(fileName)){      continue;      }      System.out.println(fieldName + ":" + fileName);String extensionName = fileName.substring(fileName.lastIndexOf("."),fileName.length());      String contentType = item.getContentType();      boolean isInMemory = item.isInMemory();      long sizeInBytes = item.getSize();                // Process a file upload      String url = userfilepath+StringUtil.getUUID()+extensionName;      File uploadedFile = new File(url);if (!uploadedFile.exists()) {// 如果要写入的文件或目录不存在,那么试着创建要写入的目录,以便写入文件uploadedFile.getParentFile().mkdirs();}            item.write(uploadedFile);                }}} catch (Exception e) {e.printStackTrace();}}}
页: [1]
查看完整版本: 学习使用Commons的FileUpload组件