|
|
刚弄了一个基础的,还在学习中。。。还望前辈们多多指教
刚看到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();}}} |
|