• java 文件的上传和下载


    主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载。上传时文件是存放在服务器中,我用的是tamcat。

    首先建立一个servlet 类,对文件的操作

     1 package com.dkt.servlet;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.sql.SQLException;
     6 import java.util.ArrayList;
     7 
     8 import javax.servlet.ServletException;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 import org.lxh.smart.Files;
    14 import org.lxh.smart.SmartUpload;
    15 import org.lxh.smart.SmartUploadException;
    16 
    17 public class FileUpdownLoad extends HttpServlet {
    18 
    19     public void doGet(HttpServletRequest request, HttpServletResponse response)
    20             throws ServletException, IOException {
    21         doPost(request, response);
    22     }
    23 
    24     public void doPost(HttpServletRequest request, HttpServletResponse response)
    25             throws ServletException, IOException {
    26 
    27         response.setContentType("text/html");
    28         request.setCharacterEncoding("GB2312");
    29         response.setCharacterEncoding("GB2312");
    30         SmartUpload su = new SmartUpload();
    31         
    32         String op = request.getParameter("op");
    33         if (("upload").equals(op)) {
    34             su.initialize(getServletConfig(), request, response);//初始化
    35             su.setAllowedFilesList("txt,jpg,png,docx,xml,PNG,xlsx");//允许上传的文件类型,区分大小写
    36             try {
    37                 su.setDeniedFilesList("html,exe");//不允许上传的文件类型
    38             } catch (SQLException e) {
    39                 e.printStackTrace();
    40             }
    41             su.setMaxFileSize(5000000);//文件大小
    42             
    43             /*Files files = su.getFiles();
    44             org.lxh.smart.File file2 = files.getFile(0);
    45             System.out.println(file2.getFileName());
    46             for(int i=0;i<files.getCount();i++){
    47                 org.lxh.smart.File file = files.getFile(i);
    48                 String fileName = file.getFileName();
    49                 System.out.println("fileName---->"+fileName);
    50                 fileName =  new String(fileName.getBytes("ISO-8859-1"),"GB2312");
    51                 try {
    52                     file.saveAs(fileName);
    53                 } catch (SmartUploadException e) {
    54                     e.printStackTrace();
    55                 }
    56             }*/
    57             try {
    58                 su.upload();//上传
    59                 su.save("/smartUpdownload");//上传的路径,在tomcat下的文件夹中
    60                 System.out.println("上传成功!!!");
    61             } catch (SmartUploadException e) {
    62                 e.printStackTrace();
    63             }
    64             request.getRequestDispatcher("fileUpDownload.jsp").forward(request, response);
    65         }else if(("showFiles").equals(op)){
    66             //得到上传到服务器的文件夹
    67             String realPath = this.getServletContext().getRealPath("smartUpdownload");
    68             //得到所有文件的文件名,并显示在页面上
    69             File file = new File(realPath);
    70             File[] listFiles = file.listFiles();
    71             ArrayList<String> list = new ArrayList<String>();
    72             for (File fi : listFiles) {
    73                 list.add(fi.getName());//把所有的文件名存入集合
    74             }
    75             request.setAttribute("list", list);        
    76             request.getRequestDispatcher("fileUpDownload.jsp").forward(request, response);
    77         }else if(("download").equals(op)){
    78             su.initialize(getServletConfig(), request, response);//初始化
    79             su.setContentDisposition(null);
    80             String filename1 = request.getParameter("filename");
    81             String filename = new String(filename1.getBytes("ISO-8859-1"), "GB2312");
    82             System.out.println(filename);
    83             try {
    84                 su.downloadFile("/smartUpdownload/"+filename);
    85             } catch (SmartUploadException e) {
    86                 e.printStackTrace();
    87             }
    88         }
    89         
    90         
    91         
    92         
    93     }
    94 
    95 }

    jsp 内容如下:

    这里使用到了  c 标签,所以需要两个jar包  jstl.jar 和   standard-1.1.2.jar

    并使用

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 导入包
     1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
     2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     3 <%@page import="org.lxh.smart.SmartUpload"%>
     4 <%@page import="org.lxh.smart.File"%>
     5 <%
     6 String path = request.getContextPath();
     7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     8 %>
     9 
    10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    11 <html>
    12   <head>
    13     <base href="<%=basePath%>">
    14     
    15     <title>My JSP 'fileUpDownload.jsp' starting page</title>
    16     
    17     <meta http-equiv="pragma" content="no-cache">
    18     <meta http-equiv="cache-control" content="no-cache">
    19     <meta http-equiv="expires" content="0">    
    20     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    21     <meta http-equiv="description" content="This is my page">
    22     <!--
    23     <link rel="stylesheet" type="text/css" href="styles.css">
    24     -->
    25 
    26   </head>
    27   
    28   <body>
    29     <form action="FileUpdownLoad?op=upload"  method="post" enctype="multipart/form-data" >
    30             <input  type="file" name="file1" value="上传的文件">
    31             <input type="submit" value="上传">
    32     </form>
    33     <hr/>
    34     <a href = "FileUpdownLoad?op=showFiles">显示下载的文件目录</a><br/>
    35     <c:forEach  items="${list}" var="filename">  
    36         <a href="FileUpdownLoad?op=download&filename=${filename }">下载文件:${filename }</a><br/>
    37     </c:forEach>
    38     
    39     <a href="ImageServlet">显示水印图片</a>
    40   </body>
    41 </html>

  • 相关阅读:
    Flutter网络请求库Dio的封装(单例、动态baseUrl、拦截器、日志、请求loading)
    解决GitHub无法访问问题
    Flutter开发(18)- 屏幕适配
    【Flutter 实战】各种各样形状的组件
    vscode 清除多余空行
    项目实战整理 Flutter 代码与目录规范v1.0
    flutter 显示表情
    vscode常用快捷键与插件推荐
    在vscode中开发Flutter alt + enter快捷键不起作用(没反应)的解决方法
    Flutter Icons 内置图标库,全套Material图标
  • 原文地址:https://www.cnblogs.com/nn369/p/7642497.html
Copyright © 2020-2023  润新知