六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 67|回复: 0

学习使用Commons的FileUpload组件

[复制链接]

升级  18.67%

18

主题

18

主题

18

主题

秀才

Rank: 2

积分
78
 楼主| 发表于 2013-2-7 14:47:57 | 显示全部楼层 |阅读模式
刚弄了一个基础的,还在学习中。。。还望前辈们多多指教

刚看到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();}}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表