分类: Java
基础类:
操作类:
操作展示:
- 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>