Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60122
  • 博文数量: 44
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-02 23:48
文章分类

全部博文(44)

文章存档

2009年(44)

我的朋友
最近访客

分类: 系统运维

2009-08-18 10:12:20

因为最近工作需要,研究了一下FileUpload组件,因为还没有全部弄明白,所以写的代码并不完善.尤其是下载还没有做.但是考虑到有的朋友能和我一样,需要这方面的代码例子,所以把自己的代码拿出来,不好的话.不要扔鸡蛋 ^_^

文件上传页面 inputUpLoad.jsp :


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.servlet.*"     %>
<%@ page import="javax.servlet.http.*"     %>

         
       文件上传页面
    
  
    
  
    


    
     
      
      
      
      
      
       <%
        //查询数据库信息,反映到页面上
     
        try{
           Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
           String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hxl";
           String name = "sa";
           String pass = "";
           String sql = "select * from files";
            Connection con = DriverManager.getConnection(url,"sa","");
            Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery(sql);
             while(rs.next()){
             %>
           
     
      
      
      
           
      
      
       <%
        }
             System.out.println(sql);
           stmt.close();
          con.close();
         }catch(ClassNotFoundException e){
          e.printStackTrace();
         }
      
         //下载功能暂时没有好方法实现,将在以后完成
      
       %>
     

ID

文件名称

文件大小

上传时间

操作

<% out.println(rs.getObject(1)); %><% out.println(rs.getObject(2)); %><% out.println(rs.getObject(3)); %><% out.println(rs.getObject(4)); %>下载

    

    

      请选择要上传的文件:
  


上传处理页面,js实现页面自动跳转 getUpLoad.jsp


<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.beanutils.*" %>
<%@ page import="javax.servlet.*"     %>
<%@ page import="javax.servlet.http.*"     %>
<%@ page import="java.sql.*" %>
<%@ taglib prefix="c" uri="/WEB-INF/c.tld"%>

    
     getupload
    
  
        <%

      DiskFileUpload dfu = new DiskFileUpload();// 创建一个DFU对象
      dfu.setHeaderEncoding("UTF-8");//进行编码转换,防止上传中文出现乱码
      dfu.setSizeMax(100000000);//设置上传文件最大值 单位:字节
      dfu.setSizeThreshold(4096);//设置内存保存的文件最大值 单位:字节
      dfu.setRepositoryPath("F:\\upload");//设置上传文件路径
   
      try{
       List FileItems = dfu.parseRequest(request);//FileUpLoad组件request获得上传文件相关信息
       Iterator i = FileItems.iterator();//迭代方法,用于多文件上传
       String fileName = null;
       long size = 0;
       while(i.hasNext()){//循环读取上产文件
        FileItem fi = (FileItem)i.next();
        if(!fi.isFormField()){
         fileName = fi.getName();//获得文件名
         size = fi.getSize();//获得文件大小
         if((fileName==null||fileName.equals("")) && size==0){
          continue;
         }
         fileName = fi.getName();
         size = fi.getSize();
         fileName = fileName.replace(':','*');//字符转换
         fileName = fileName.replace('\\','*');//字符专函
         fileName = fileName.substring(fileName.lastIndexOf("*")+1);//去除文件保存前缀.只保留文件名
          File writeFile = new File("F:\\upload",fileName);
         fi.write(writeFile);//写入文件
        }
       }
       %>
    

      
        




  
     <%
  
     //将上传文件信息传入数据库
  
       out.println("文件上传成功:"+fileName);%>
      
<%
       out.println("文件大小:"+size+"kb");
    
       try{
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hxl";
        String name = "sa";
        String pass = "";
     
        Calendar da=Calendar.getInstance();
        int year = da.get(Calendar.YEAR);
        int month = da.get(Calendar.MONTH)+1;
        int day = da.get(Calendar.DAY_OF_MONTH);
        int hour = da.get(Calendar.HOUR_OF_DAY);
        int minute = da.get(Calendar.MINUTE);
        int second = da.get(Calendar.SECOND);
     
        String rq = ""+year+month+day+hour+minute+second;
     
     
      System.out.println("+++++++++++++++++++++++++++++++"+rq+"+++++++++++++++++++++++++++++++++");
     
        String downFile = "F:\\upload\\"+fileName;
        System.out.println("***************************"+downFile+"*****************************");
     
     
        String sql = "insert into files values('"+fileName+"','"+size+"','"+rq+"','"+downFile+"')";
         
         
         Connection con = DriverManager.getConnection(url,"sa","");
         Statement stmt = con.createStatement();
          stmt.executeQuery(sql);
          System.out.println("insert into files values('"+fileName+"','"+size+"',null,null)");
        stmt.close();
       con.close();
      }catch(ClassNotFoundException e){
       e.printStackTrace();
      }
    
      }catch(Exception fue){
       //fue.printStackTrace();
      }
   
     %>


因为servlet需要修改xml文件,比较麻烦,所以将处理流程全部写到页面上了,包括数据库链接,虽然不符合规范,但是功能实现了.希望有高手 能够指点不足.另外补充一下.要实现全部FileUpLoad的全部功能.很多朋友说要用到FileUpLoad本身jar包和beanutil的jar 包,其实除了这两个还需要一个commons-io包,有些问题就是因为没有引入io所致.

就先写到这里了.如果有意见和建议,希望能够直接联系!

附上需要jar包:

FileUpLoad jar包:

beanutil jar包:

io jar包:

阅读(612) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-08-29 22:15:54

通过upload取得哪些标题、内容和文件名,我怎么在外边都取不到 ,数据库,只能在那个upload try里面调用么,才能获得哪些参数?