文件上传

  相信有过Web开发经历的小朋友,对于文件上传都不陌生,但如何在自己的网站上提供文件上传呢?我想一定难到过很多同学,我就是其中的一个,近段时间因为开发的需要,总结了一下Web端文件上传的原理,在这里和大家分享一下。

jsp页面的主要代码:

<body>
    <h1>单文件上传</h1>
    <hr/>
    <form action="upload" method="post" enctype="multipart/form-data">
    文件<input type="file" name="img1"/><br/>
    <input type="submit" value="上传"/>
    </form>
    <h1>文件重命名</h1>
    <hr/>
    <form action="upload2" method="post" enctype="multipart/form-data">
    文件名<input type="text" name="imgname"/><br/>
    文件<input type="file" name="img1"/><br/>
    <input type="submit" value="上传"/>
    </form>
    <h1>自动生成文件名</h1>
    <hr/>
    <form action="upload3" method="post" enctype="multipart/form-data">
    文件<input type="file" name="img1"/><br/>
    <input type="submit" value="上传"/>
    </form>
    <h1>多文件上传</h1>
    <hr/>
    <form action="upload4" method="post" enctype="multipart/form-data">
    文件1<input type="file" name="img1"/><br/>
     文件2<input type="file" name="img1"/><br/>
      文件3<input type="file" name="img1"/><br/>
    <input type="submit" value="上传"/>
    </form>
  </body>

  下面是具体的上传方法介绍 

单文件上传:
 SmartUpload smart = new SmartUpload();
  smart.initialize(this.getServletConfig(),request,response);   try { smart.upload(); smart.save("images");     } catch (SmartUploadException e) {   // TODO Auto-generated catch block   e.printStackTrace(); }

 文件重命名:

SmartUpload smart = new SmartUpload();
		smart.initialize(this.getServletConfig(),request,response);
		try {
			smart.upload();
			String imgname = smart.getRequest().getParameter("imgname");
			
			String absPath = this.getServletContext().getRealPath("/images");//获取文件的保存路径
			System.out.println(absPath);
			String ext = smart.getFiles().getFile(0).getFileExt();//获取文件的后缀名
		
			String fileName = absPath+File.separator+imgname+"."+ext;//生成文件的保存名
			System.out.println("File name="+fileName);
			
			smart.getFiles().getFile(0).saveAs(fileName);
			
		} catch (SmartUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
自动生成文件名:
SmartUpload smart = new SmartUpload();
		smart.initialize(this.getServletConfig(),request,response);
		
		String disFile = "";
		try {
			smart.upload();
			//String imgname = smart.getRequest().getParameter("imgname");
			IPTimeStamp ipts = new IPTimeStamp();
			String imgname = ipts.getIPTimestamp();
			
			String absPath = this.getServletContext().getRealPath("/images");
			System.out.println(absPath);
			String ext = smart.getFiles().getFile(0).getFileExt();
		
			String fileName = absPath+File.separator+imgname+"."+ext;
			System.out.println("File name="+fileName);
			
			smart.getFiles().getFile(0).saveAs(fileName);
			disFile = imgname+"."+ext;
			
		} catch (SmartUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

生成随机文件名的代码:

package cn.edu.hpu.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class IPTimeStamp {
	
	private String ip;
	
	public IPTimeStamp()
	{
		
	}
	public IPTimeStamp(String ip)
	{
		this.ip = ip;
	}
	
	public String getIPTimestamp()
	{
		StringBuffer buffer = new StringBuffer();
		
		if(ip != null)
		{
			String [] digits = ip.split("\\.");
			for(String s : digits)
			{
				buffer.append(s);
			}
		}
		
		//时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		String time = sdf.format(new Date());
		buffer.append(time);
		
		Random random = new Random();
		for(int i=0; i<4; i++)
		{
			buffer.append(random.nextInt(10));
		}
		
		return buffer.toString();
	}
	
	public static void main(String[] args) {
		IPTimeStamp ipts = new IPTimeStamp("192.168.19.121");
		System.out.println(ipts.getIPTimestamp());
	}

}
多文件上传:
SmartUpload smart = new SmartUpload();
		smart.initialize(this.getServletConfig(),request,response);
		try {
			smart.upload();
			for(int i=0; i<smart.getFiles().getCount(); i++)
			{
				//String imgname = smart.getRequest().getParameter("imgname");
				IPTimeStamp ipts = new IPTimeStamp();
				String imgname = ipts.getIPTimestamp();
				
				String absPath = this.getServletContext().getRealPath("/images");//文件保存的路径
				String ext = smart.getFiles().getFile(i).getFileExt();//获得文件的后缀名
			
				String fileName = absPath+File.separator+imgname+"."+ext;//生成上传文件的保存时的名字
				System.out.println("File name="+fileName);
				
				smart.getFiles().getFile(i).saveAs(fileName);
			}
		} catch (SmartUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

  相信看到这里,大家一定已经明白如何完成文件上传了。(如有错误还望指正。谢谢)

posted @ 2014-10-26 20:24  小破孩123  阅读(454)  评论(0编辑  收藏  举报