• 文件上传


      相信有过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();
    		}
    

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

  • 相关阅读:
    第四次作业
    第三次作业
    java第三次作业
    java第二次作业
    java作业
    第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4052668.html
Copyright © 2020-2023  润新知