基础类:
操作类:
操作展示:
package cn.mldn.lxh.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class IPTimeStamp {
private SimpleDateFormat sdf = null;
private String ip = null;
public IPTimeStamp(){
}
public IPTimeStamp(String ip){
this.ip = ip;
}
public String getIPTimeRand(){
StringBuffer buf = new StringBuffer();
if(this.ip!=null){
String s[] = this.ip.split("\\.");
for(int i=0;i<s.length;i++){
buf.append(this.addZero(s[i],3)); //不够三位数字的要补0
}
}
buf.append(this.getTimeStamp()); //取得时间戳
Random r = new Random();
for(int i=0;i<3;i++){
buf.append(r.nextInt(10)); //增加一个随机数
}
return buf.toString();
}
private String addZero(String str,int len){
StringBuffer s = new StringBuffer();
s.append(str);
while(s.length()<len){
s.insert(0,"0");
}
return s.toString();
}
public String getDate(){
this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return this.sdf.format(new Date());
}
public String getTimeStamp(){
this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return this.sdf.format(new Date());
}
}
操作类:
package cn.mldn.lxh.util;
import java.util.*;
import java.io.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import cn.mldn.lxh.util.IPTimeStamp;
public class FileUploadTools{
private HttpServletRequest request=null;
private List<FileItem> items=null;
private Map<String,List<String>> params=new HashMap<String,List<String>>();
private Map<String,FileItem> files=new HashMap<String,FileItem>();
public FileUploadTools(HttpServletRequest request,int maxSize,String tempDir) throws Exception{
this.request=request;
DiskFileItemFactory factory=new DiskFileItemFactory();
if(tempDir!=null){
factory.setRepository(new File(tempDir));
}
ServletFileUpload upload= new ServletFileUpload(factory);
if(maxSize>0){
upload.setFileSizeMax(maxSize);
}
this.items=upload.parseRequest(request);
init();
}
private void init(){
Iterator<FileItem> iter=this.items.iterator();
IPTimeStamp its=new IPTimeStamp(this.request.getRemoteAddr());
while(iter.hasNext()){
FileItem item=iter.next();
if(item.isFormField()){ //是普通数据
String name=item.getFieldName();
String value=null;
try {
value=item.getString("utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<String> temp=null;
if(this.params.containsKey(name)){
temp=this.params.get(name);
}else{
temp=new ArrayList<String>();
}
temp.add(value);
this.params.put(name,temp);
}else{ // 按照文件
String fileName = its.getIPTimeRand()+"."+item.getName().split("\\.")[1];
this.files.put(fileName,item);
}
}
}
public String getParameter(String name){
List<String> list =this.params.get(name);
if(list!=null){
return list.toArray(new String[]{})[0];
}
return null;
}
public String[] getParameterValues(String name){
List<String> list=this.params.get(name);
if(list!=null){
return list.toArray(new String[]{});
}
return null;
}
public Map<String,FileItem> getUploadFiles(){
return this.files;
}
public List<String> saveAll(String saveDir) throws Exception{
FileItem item =null;
List<String> names=new ArrayList<String>();
if(this.files.size()>0){ // 有内容
Set<String> set = this.files.keySet();
Iterator<String> iter= set.iterator();
// 循环将要上传的文件 依次保存到指定的文件夹中
while(iter.hasNext()){
item = this.files.get(iter.next());
String fileName= new IPTimeStamp(request.getRemoteAddr()).getIPTimeRand()
+"."+iter.next().split("\\.")[1];
names.add(fileName);
InputStream input =null;
OutputStream output=null;
new FileOutputStream(fileName);
try{
input=item.getInputStream();
output = new FileOutputStream(saveDir+fileName);
int len=0;
byte[] b=new byte[1024];
while((len=input.read(b))!=-1){
output.write(b,0,len);
}
}catch(Exception e){
throw e;
}finally{
try{
output.close();
input.close();
}catch(Exception e1){
throw e1; }
}
}
}
return names; // 返回保存后的每个文件名称
}
}
操作展示:
<!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>Insert title here</title>
</head>
<body>
<form action="fileupload_demo03.jsp" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname"><br/>
兴趣:<input type="checkbox" name="inst" value="swimming">游泳
<input type="checkbox" name="inst" value="Song">唱歌
<input type="checkbox" name="inst" value="Run">跑步<br/>
请选择文件:<input type="file" name="pic1"><br/>
请选择文件:<input type="file" name="pic2"><br/>
请选择文件:<input type="file" name="pic3"><br/>
请选择文件:<input type="file" name="pic4"><br/>
<input type="submit" value="上传">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<%@ page import="java.util.*"%>
<%@ page import="cn.mldn.lxh.util.*"%>
<!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=utf8">
<title>Insert title here</title>
</head>
<body>
<%
FileUploadTools fut = new FileUploadTools(request,3*1024*1024,this.getServletContext().getRealPath("/")+"uploadtemp");
String name = fut.getParameter("uname");
String inst[] = fut.getParameterValues("inst");
List<String> all = fut.saveAll(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator);
%>
<h3>姓名:<%=name%></h3>
<h3>兴趣:
<%
for(int x=0;x<inst.length;x++){
%>
<%=inst[x]%>、
<%
}
%>
</h3>
<%
Iterator<String> iter = all.iterator();
while(iter.hasNext()){
%>
<img alt="" src="../upload/<%=iter.next() %>">
<%
}
%>
</body>
</html>