zoukankan      html  css  js  c++  java
  • 文件的上传和下载

    1.上传文件界面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 <form action="../upLoadServlet" method="post" enctype="multipart/form-data">
    11 <label>请选择文件</label><br/>
    12 <input type="file" name="fileName"/><br/>
    13 <input type="file" name="fileName"/><br/>
    14 <input type="file" name="fileName"/><br/>
    15 <button type="submit">提交</button>
    16 </form>
    17 </body>
    18 </html>
    View Code

    2.下载文件界面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     6 <% String path=request.getContextPath(); %>
     7 <script type="text/javascript" src="../js/jquery-1.7.2.js"></script>
     8 <script type="text/javascript">
     9 $(function(){
    10     
    11     $("input").click(function(){
    12     
    13         location.href="<%=path%>/FindInfoServlet";
    14     
    15     })
    16     
    17 })
    18 </script>
    19 <head>
    20 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    21 <title>Insert title here</title>
    22 </head>
    23 
    24 <body>
    25 <input type="button" value="查询数据">
    26 <table border="1">
    27 <tr>
    28 <th>序号</th>
    29 <th>文件名</th>
    30 <th>文件类型</th>
    31 <th>文件路径</th>
    32 <th>文件大小</th>
    33 <th>上传时间</th>
    34 <th>下载次数</th>
    35 <th>操作</th>
    36 </tr>
    37 
    38 
    39 <c:forEach items="${list }" var="v" varStatus="vs">
    40 <tr>
    41 <td>${v.getId()}</td>
    42 <td>${v.getFname()}</td>
    43 <td>${v.getType()}</td>
    44 <td>${v.getPath()}</td>
    45 <td>${v.getSize()}</td>
    46 <td>${v.getTime()}</td>
    47 <td></td>
    48 <td><a href="<%=path%>/DownLoadServlet?ID=${v.getId()}"><button type="button">下载</button></a></td>
    49 
    50 </tr>
    51 </c:forEach>
    52 </table>
    53 </body>
    54 </html>
    View Code

    3.连接数据库的类

     1 package com.zdsofe.work;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.SQLException;
     6 
     7 public class DBUtil {
     8     private static String DRIVER="com.mysql.jdbc.Driver";
     9     private static String URL="jdbc:mysql://localhost:3306/mysql";
    10     private static String user="root";
    11     private static String key="775297";
    12     public static Connection conn;
    13     
    14     //加载驱动
    15         static{
    16             try {
    17                 Class.forName(DRIVER);
    18             } catch (ClassNotFoundException e) {
    19                 e.printStackTrace();
    20             }
    21         }
    22         //连接数据库
    23         public static Connection getConnection(){
    24          try {
    25             conn = DriverManager.getConnection(URL, user, key);
    26         } catch (SQLException e) {
    27             e.printStackTrace();
    28         }
    29             return conn;
    30         }
    31 }
    View Code

    4.文件的属性

     1 package com.zdsofe.work;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 public class FileDemo {
     7     
     8      //文件ID
     9      private int id;
    10      //文件名
    11      private String fname;
    12      //文件类型
    13      private String type;
    14      //文件路径
    15      private String path;
    16      //文件大小
    17      private int size ;
    18      //文件上传时间
    19      private String time;
    20      
    21      
    22     public FileDemo( String fname, String type, String path, int size) {            
    23         this.fname = fname;
    24         this.type = type;
    25         this.path = path;
    26         this.size = size;
    27         
    28     }
    29     
    30     public FileDemo(String path) {
    31         
    32         this.path = path;
    33     }
    34 
    35     public FileDemo(int id, String fname, String type, String path, int size,
    36             String time) {
    37     
    38         this.id = id;
    39         this.fname = fname;
    40         this.type = type;
    41         this.path = path;
    42         this.size = size;
    43         this.time = time;
    44     }
    45 
    46     public int getId() {
    47         return id;
    48     }
    49     public void setId(int id) {
    50         this.id = id;
    51     }
    52     public String getFname() {
    53         return fname;
    54     }
    55     public void setFname(String fname) {
    56         this.fname = fname;
    57     }
    58     public String getType() {
    59         return type;
    60     }
    61     public void setType(String type) {
    62         this.type = type;
    63     }
    64     public String getPath() {
    65         return path;
    66     }
    67     public void setPath(String path) {
    68         this.path = path;
    69     }
    70     public int getSize() {
    71         return size;
    72     }
    73     public void setSize(int size) {
    74         this.size = size;
    75     }
    76     public String getTime() {
    77         SimpleDateFormat sf=new SimpleDateFormat();
    78         time=sf.format(new Date());
    79         return time;
    80     }
    81     public void setTime(String time) {
    82         this.time = time;
    83     }
    84      
    85      
    86      
    87 }
    View Code

    5.下载的服务器

     1 package com.zdsofe.work;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.IOException;
     6 import java.io.InputStream;
     7 import java.io.OutputStream;
     8 
     9 import javax.servlet.ServletException;
    10 import javax.servlet.annotation.WebServlet;
    11 import javax.servlet.http.HttpServlet;
    12 import javax.servlet.http.HttpServletRequest;
    13 import javax.servlet.http.HttpServletResponse;
    14 
    15 /**
    16  * Servlet implementation class DownLoadServlet
    17  */
    18 @WebServlet("/DownLoadServlet")
    19 public class DownLoadServlet extends HttpServlet {
    20     private static final long serialVersionUID = 1L;
    21        
    22     /**
    23      * @see HttpServlet#HttpServlet()
    24      */
    25     public DownLoadServlet() {
    26         super();
    27         // TODO Auto-generated constructor stub
    28     }
    29 
    30     /**
    31      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    32      */
    33     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    34             //获取参数
    35             String id= request.getParameter("ID");
    36             //通过id获取对象
    37             FileDemo demo= FileDao.findInfoById(id);
    38             //获取文件路径
    39             String path=demo.getPath();
    40             //根据文件路径获取对象
    41             File file = new File(path);;
    42             //设置响应文件的类型
    43             response.setContentType(demo.getType());
    44             //设置响应头部信息
    45             String contentDispion = "attachment;filename="+file.getName()+"";
    46             //设置文件头部信息
    47             response.setHeader("content-disposition",contentDispion);
    48             
    49             InputStream in = new FileInputStream(file);
    50             //处输出流对象
    51             OutputStream out = response.getOutputStream();
    52             byte[] b = new byte[1024];
    53             //输出文件
    54             int len = 0;
    55             
    56             while((len = in.read(b)) != -1)
    57             {
    58                 out.write(b, 0, len);
    59             }
    60             
    61             
    62             out.flush();
    63             out.close();
    64             in.close();
    65             
    66     }
    67 
    68     /**
    69      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    70      */
    71     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    72         // TODO Auto-generated method stub
    73     }
    74 
    75 }
    View Code

    6.Dao层

     1 package com.zdsofe.work;
     2 
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.SQLException;
     6 import java.util.ArrayList;
     7 import java.util.List;
     8 
     9 public class FileDao {
    10 
    11     //保存文件
    12     public static void saveFile(FileDemo f)
    13     {
    14         //sql语句
    15         String sql="insert into run(fname,type,path,size,time) values(?,?,?,?,?)";
    16         //执行sql
    17 
    18         try {        
    19               PreparedStatement ps= DBUtil.getConnection().prepareStatement(sql);
    20               ps.setString(1, f.getFname());
    21               ps.setString(2, f.getType());
    22               ps.setString(3, f.getPath());
    23               ps.setInt(4, f.getSize());
    24               ps.setString(5, f.getTime());      
    25               ps.executeUpdate();
    26       
    27     } catch (SQLException e) {
    28         e.printStackTrace();
    29     }
    30     }
    31     
    32     //查询所有的文件    
    33     public static List<FileDemo> findInfo()
    34     {
    35         //sql语句
    36         String sql="select * from run";
    37         //执行sql
    38         PreparedStatement ps;
    39         //接受数据的集合
    40         List<FileDemo> list=new ArrayList<FileDemo>();
    41         try {
    42                 ps = DBUtil.getConnection().prepareStatement(sql);
    43                 ResultSet rs=ps.executeQuery();
    44                 
    45                 while(rs.next())
    46                 {
    47                     int id=rs.getInt("id");
    48                     String name=rs.getString("fname");
    49                     String type=rs.getString("type");
    50                     String path=rs.getString("path");
    51                     int size=rs.getInt("size");
    52                     String time=rs.getString("time");
    53                     FileDemo demo=new FileDemo(id, name, type, path, size, time);
    54                     list.add(demo);
    55                 }
    56         } catch (Exception e) {
    57             e.printStackTrace();
    58              }
    59          return list;
    60     }
    61     
    62     //根据ID来查询
    63     public static FileDemo findInfoById(String id)
    64     {
    65         //sql语句
    66         String sql ="select * from run as r where r.id='"+id+"'";
    67         ResultSet rs=null;
    68         FileDemo demo=null;
    69         //执行sql
    70         try {
    71             PreparedStatement ps=DBUtil.getConnection().prepareStatement(sql);
    72             rs=ps.executeQuery();
    73             while(rs.next())
    74             {
    75                 int dd=rs.getInt("id");
    76                 String name=rs.getString("fname");
    77                 String type=rs.getString("type");
    78                 String path=rs.getString("path");
    79                 int size=rs.getInt("size");
    80                 String time=rs.getString("time");
    81                 demo=new FileDemo(dd,name,type,path,size,time);
    82             }
    83         } catch (SQLException e) {
    84             e.printStackTrace();
    85         }
    86         return demo;
    87     }
    88     
    89 }
    View Code

    7.过滤器

     1 package com.zdsofe.work;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.Filter;
     6 import javax.servlet.FilterChain;
     7 import javax.servlet.FilterConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 
    14 public class filter implements Filter {
    15 
    16     @Override
    17     public void destroy() {
    18         // TODO Auto-generated method stub
    19 
    20     }
    21 
    22     @Override
    23     public void doFilter(ServletRequest arg0, ServletResponse arg1,
    24             FilterChain arg2) throws IOException, ServletException {
    25         
    26         HttpServletRequest request=(HttpServletRequest)arg0;
    27         HttpServletResponse response=(HttpServletResponse)arg1;
    28         request.setCharacterEncoding("utf-8");
    29         response.setCharacterEncoding("utf-8");
    30         response.setContentType("text/html charset=utf-8");
    31         arg2.doFilter(request, response);
    32     }
    33 
    34     @Override
    35     public void init(FilterConfig arg0) throws ServletException {
    36         // TODO Auto-generated method stub
    37 
    38     }
    39 
    40 }
    View Code

    8.配置xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     3   <display-name>webProject7</display-name>
     4   <filter>
     5     <filter-name>encode</filter-name>
     6     <filter-class>com.zdsofe.work.filter</filter-class>
     7   </filter>
     8   <filter-mapping>
     9     <filter-name>encode</filter-name>
    10     <url-pattern>/*</url-pattern>
    11   </filter-mapping>
    12   <welcome-file-list>
    13     <welcome-file>index.html</welcome-file>
    14     <welcome-file>index.htm</welcome-file>
    15     <welcome-file>index.jsp</welcome-file>
    16     <welcome-file>default.html</welcome-file>
    17     <welcome-file>default.htm</welcome-file>
    18     <welcome-file>default.jsp</welcome-file>
    19   </welcome-file-list>
    20 </web-app>
    View Code

    9.上传的服务器

      1 package com.zdsofe.work;
      2 
      3 import java.io.File;
      4 import java.io.IOException;
      5 import java.util.Collection;
      6 
      7 import javax.servlet.ServletConfig;
      8 import javax.servlet.ServletException;
      9 import javax.servlet.annotation.MultipartConfig;
     10 import javax.servlet.annotation.WebServlet;
     11 import javax.servlet.http.HttpServlet;
     12 import javax.servlet.http.HttpServletRequest;
     13 import javax.servlet.http.HttpServletResponse;
     14 import javax.servlet.http.Part;
     15 
     16 import org.apache.commons.collections.CollectionUtils;
     17 
     18 /**
     19  * Servlet implementation class upLoadServlet
     20  */
     21 @WebServlet("/upLoadServlet")
     22 @MultipartConfig(location="D://upFile",
     23                  fileSizeThreshold=1024*1024*20,
     24                  maxFileSize=1024*1024*20,
     25                  maxRequestSize=1024*1024*40        
     26         )
     27 public class upLoadServlet extends HttpServlet {
     28     private static final long serialVersionUID = 1L;
     29     private static final String LOCATION="D://upFile"; 
     30     /**
     31      * @see HttpServlet#HttpServlet()
     32      */
     33     public upLoadServlet() {
     34         super();
     35         // TODO Auto-generated constructor stub
     36     }
     37 
     38     /**
     39      * @see Servlet#init(ServletConfig)
     40      */
     41     public void init(ServletConfig config) throws ServletException {
     42         
     43         File file=new File("D://upFile");
     44         if(!file.exists()&&!file.isDirectory())
     45         {
     46             file.mkdir();
     47         }
     48     }
     49 
     50     /**
     51      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     52      */
     53     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     54         // TODO Auto-generated method stub
     55     }
     56 
     57     /**
     58      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     59      */
     60     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     61          /*
     62           * 单文件上传
     63           * //得到part对象
     64          Part part=request.getPart("fileName");
     65          if(part!=null)
     66          {  
     67              //获得文件的类型
     68              String type= part.getContentType();
     69              //获取文件的大小
     70              long size= part.getSize();
     71              //获取文件头信息
     72              String content= part.getHeader("content-disposition");
     73              //获取文件名所在的位置
     74              int a= content.indexOf("filename=");
     75              //获取完整的文件名
     76              String name=content.substring(a+10,content.lastIndexOf(""") );
     77              //讲上传的文件写到指定的位置
     78              part.write(name);
     79          }*/
     80         
     81         //多文件上传
     82         Collection<Part> parts=request.getParts();    
     83         if(!CollectionUtils.isEmpty(parts))
     84         {
     85             for(Part part : parts)
     86             {
     87                  //获取文件头信息
     88                  String content= part.getHeader("content-disposition");
     89                  //获取文件的类型
     90                  String type= part.getContentType();
     91                  //获取文件的大小
     92                  long size=  part.getSize();                
     93                  //获取文件名所在的位置
     94                  int a= content.indexOf("filename=");                 
     95                  //获取完整的文件名
     96                  String name=content.substring(a+10,content.lastIndexOf(""") );
     97                  //获取文件的路径
     98                  String path=LOCATION+File.separator+name;
     99                  //讲上传的文件写到指定的位置
    100                  part.write(name);
    101                  
    102                  FileDemo demo=new FileDemo(name, type, path, (int)size);
    103                  //调用保存方法
    104                  FileDao.saveFile(demo);
    105                
    106                 
    107             }
    108         }
    109                 
    110     }
    111 
    112 }
    View Code

                         

  • 相关阅读:
    【转】VS2010中 C++创建DLL图解
    [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode
    [转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法
    【转】 Tomcat v7.0 Server at localhost was unable to start within 45
    【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
    【转】SVN管理多个项目版本库
    【转】eclipse安装SVN插件的两种方法
    【转】MYSQL启用日志,和查看日志
    【转】Repository has not been enabled to accept revision propchanges
    【转】SVN库的迁移
  • 原文地址:https://www.cnblogs.com/zclqian/p/7281579.html
Copyright © 2011-2022 走看看