开发fileupload组件的专属操作类

基础类:

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




操作类:
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 items=null;
 private Map> params=new HashMap>();
 private Map files=new HashMap();

 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 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 temp=null;
    if(this.params.containsKey(name)){
     temp=this.params.get(name);
    }else{
     temp=new ArrayList();
    }
    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 list =this.params.get(name);
  if(list!=null){
   return list.toArray(new String[]{})[0];
  }
  return null;
 }

 public String[] getParameterValues(String name){
  List list=this.params.get(name);
  if(list!=null){
   return list.toArray(new String[]{});
  }
  return null;
 }

 public Map getUploadFiles(){
  return this.files;
 }

 public List saveAll(String saveDir) throws Exception{
  FileItem item =null;
  List names=new ArrayList();
  if(this.files.size()>0){     //  有内容
   Set set = this.files.keySet();
   Iterator 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;   // 返回保存后的每个文件名称
 }
}



操作展示:





Insert title here


姓名:
兴趣:游泳 唱歌 跑步
请选择文件:
请选择文件:
请选择文件:
请选择文件:



<%@ page language="java" contentType="text/html; charset=utf8"
    pageEncoding="utf8"%>
<%@ page import="java.util.*"%>
<%@ page import="cn.mldn.lxh.util.*"%>




Insert title here


<%
    FileUploadTools fut = new FileUploadTools(request,3*1024*1024,this.getServletContext().getRealPath("/")+"uploadtemp");
    String name = fut.getParameter("uname");
    String inst[] = fut.getParameterValues("inst");
    List all = fut.saveAll(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator);
%>

姓名:<%=name%>

兴趣: <% for(int x=0;x <%=inst[x]%>、 <% } %>

<% Iterator iter = all.iterator(); while(iter.hasNext()){ %> <% } %>


你可能感兴趣的:(Java)