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

                         

  • 相关阅读:
    Hibernate系列教材 (五)- 基础
    Hibernate系列教材 (四)- 基础
    Hibernate系列教材 (三)- 基础
    Hibernate系列教材 (二)- 基础
    Hibernate系列教材 (一)- 基础
    Spring系列教材 (六)- 注解方式测试
    LDU20级新生排位赛第三场
    POJ3678——Katu Puzzle(2-SAT)
    进阶指南图论——闇の連鎖 I. 黑暗的锁链(树上差分+LCA)
    2021年度训练联盟热身训练赛第一场——Early Orders(单调栈)
  • 原文地址:https://www.cnblogs.com/zclqian/p/7281579.html
Copyright © 2011-2022 走看看