package com.ving.servlet;
import java.io.File;
import java.io.IOException;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class MultiFileUploadServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -69746115921137365L;
@SuppressWarnings("rawtypes")
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(3*1024*1024);
diskFileItemFactory.setRepository(new File("D:/tempdir"));
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
try {
List items = servletFileUpload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void processFormField(FileItem item) {
String name = item.getFieldName();
String value = item.getString();
System.out.println("name:"+name+"value:"+value);
}
private void processUploadedFile(FileItem item) {
// String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
System.out.println(fileName+","+contentType+","+isInMemory+","+sizeInBytes);
if(sizeInBytes>0){
File dir = new File("D:/upload");
if(!dir.isDirectory()){
dir.mkdir();
}
File uploadedFile = new File(dir,fileName);
try {
if(!uploadedFile.exists()){
uploadedFile.createNewFile();
}
item.write(uploadedFile);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
==============================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>JQeury多文件上传测试</title>
<!--
引入jquery的主文件和上传的插件,注意下方蓝色文件显示的地方,只有使用了jquery相关插件的时候才可以这样写,其中class="multi"指定了该域可以使用jquery插件特有的属性,accept="gif|jpg"表示允许的上传文件类型,多个类型之间用|进行分割。maxlength="3"指定了允许上传文件的最大个数
-->
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript" src="jquery.MultiFile.js"></script>
</head>
<body>
<form action="http://localhost:8080/toHtml/upload" method="post" enctype="multipart/form-data">
<input name="jq" type="file" class="multi" maxlength="3"/><!--accept="gif|jpg"-->
<br>
<input type="submit" value="上传">
</form>
</body>
</html>