Jsp页面实现文件上传下载类代码

JSP 页面可以通过文件上传下载类代码实现文件上传、下载功能。下面是实现文件上传下载功能的完整攻略:

1. 实现文件上传

1.1. 前端界面

用户通过 JSP 页面上传文件,需要在 JSP 页面中添加文件上传的 HTML 界面:

<form action="upload.jsp" method="post" enctype="multipart/form-data">
  <input type="file" name="file" id="file" /><br />
  <input type="submit" value="上传文件" />
</form>

其中 action 属性指明表单提交时调用的 JSP 页面,method 属性指定提交方式为 POST,enctype 属性指定表单数据编码方式为 multipart/form-data,这是用于上传文件的表单编码方式。

1.2. JSP 页面处理上传请求

在 JSP 页面中,处理上传请求的代码如下所示:

<%@ page import="java.util.List, java.util.ArrayList, java.io.File" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>

<%
  // 上传文件保存目录
  String savePath = getServletContext().getRealPath("/WEB-INF/upload");
  File saveDir = new File(savePath);
  if (!saveDir.exists() && !saveDir.isDirectory()) {
    saveDir.mkdir();
  }

  // 上传文件临时存放目录
  String tmpPath = getServletContext().getRealPath("/WEB-INF/tmp");
  File tmpDir = new File(tmpPath);
  if (!tmpDir.exists() && !tmpDir.isDirectory()) {
    tmpDir.mkdir();
  }

  // 创建上传处理工厂和上传处理器
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(2048); // 设置缓冲区大小
  factory.setRepository(tmpDir); // 设置临时文件保存目录
  ServletFileUpload upload = new ServletFileUpload(factory);
  upload.setHeaderEncoding("UTF-8"); // 设置文件名编码

  // 解析上传请求
  List<FileItem> items = upload.parseRequest(request);
  for (FileItem item : items) {
    if (item.isFormField()) { // 处理普通表单字段

    } else { // 处理上传文件
      String fileName = item.getName(); // 获取文件名
      long fileSize = item.getSize(); // 获取文件大小

      if (fileName == null || fileName.trim().equals("")) {
        continue;
      }

      File uploadedFile = new File(savePath, fileName);
      item.write(uploadedFile); // 保存文件到指定目录
    }
  }

  // 跳转到文件列表页面
  response.sendRedirect("filelist.jsp");
%>

上面代码中,首先获取上传文件保存目录、临时存放目录。然后创建上传处理工厂和上传处理器,解析上传请求,获取上传的文件名和文件大小,保存文件到指定目录,最后跳转到文件列表页面。

2. 实现文件下载

2.1. JSP 页面处理下载请求

用户通过 JSP 页面下载文件,需要在 JSP 页面中添加文件下载的 HTML 界面:

<ul>
  <li><a href="download.jsp?fileName=file1.jpg">file1.jpg</a></li>
  <li><a href="download.jsp?fileName=file2.txt">file2.txt</a></li>
  <li><a href="download.jsp?fileName=file3.doc">file3.doc</a></li>
</ul>

用户点击链接时,JSP 页面会处理下载请求,代码如下所示:

<%@ page import="java.io.*" %>

<%
  String fileName = request.getParameter("fileName");
  String path = getServletContext().getRealPath("/WEB-INF/upload/" + fileName);
  File file = new File(path);

  if (!file.exists()) {
    response.sendError(HttpServletResponse.SC_NOT_FOUND);
    return;
  }

  FileInputStream fis = new FileInputStream(file);
  BufferedInputStream bis = new BufferedInputStream(fis);
  OutputStream os = response.getOutputStream();

  response.setContentType("application/octet-stream");
  response.setContentLength((int) file.length());
  response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");

  byte[] buffer = new byte[1024];
  int len;
  while ((len = bis.read(buffer)) > 0) {
    os.write(buffer, 0, len);
  }

  os.flush(); // 刷新缓存
  bis.close();
  fis.close();
%>

上面代码中,首先获取要下载的文件名和文件路径,如果文件不存在,则返回 404 错误。然后创建文件输入流和输出流,设置响应类型、文件大小和文件名,读取文件内容并输出给客户端,最后关闭流并刷新缓存。

上面就是 JSP 页面实现文件上传下载类代码的完整攻略,可以根据需要修改代码来实现自己需要的文件上传下载功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jsp页面实现文件上传下载类代码 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • SpringBoot 项目瘦身maven/gradle详解

    SpringBoot 项目瘦身 maven/gradle 详解 简介 对于使用 Maven 和 Gradle 构建的 Spring Boot 项目,在打包成 jar 或 war 文件时可能会比较大,占用过多的磁盘空间和运行内存。因此,我们需要对项目进行瘦身,减少不必要的依赖和文件。 本篇文章旨在介绍 Maven 和 Gradle 的瘦身方法,并提供两个示例以…

    Java 2023年6月2日
    00
  • JavaSpringBoot报错“UnsatisfiedDependencyException”的原因和处理方法

    原因 “UnsatisfiedDependencyException” 错误通常是以下原因引起的: 依赖项未找到:如果您的代码中存在依赖项未找到的问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 多个 Bean 匹配:如果您的代码中存在多个 Bean 匹配的问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 …

    Java 2023年5月4日
    00
  • JQuery弹出层示例可自定义

    现在我来给您详细讲解如何实现一个可自定义的jQuery弹出层示例。 1. 准备工作 在使用jQuery之前,我们需要先引入jQuery库文件。一般情况下,我们可以下载jQuery库到本地,然后在要使用的网页中引入。例如: <script src="jquery.min.js"></script> 2. 自定义弹出层…

    Java 2023年6月15日
    00
  • sqlserver 文件数据库和关系数据库的比较

    SQL Server 文件数据库和关系数据库比较 概述 SQL Server 是一种关系型数据库管理系统(RDBMS),同时也支持文件数据库。在SQL Server中,关系数据库的存储是通过表的形式,将数据存储在多个表中,并通过各种关系将表连接在一起。而文件数据库则是通过文件系统在磁盘上存储数据。 区别 存储形式 关系数据库是将数据存储在一个或多个表中,通过…

    Java 2023年5月26日
    00
  • java针对于时间转换的DateUtils工具类

    Java中处理日期时间相关的操作,可以使用Java标准库中的Date类。但是,Date类存在一些问题,如线程不安全、时间戳的精确度不够、不便于进行时间格式化等。因此,在Java平台上,一些常用的时间操作会使用第三方库提供的工具类来进行处理。其中,熟知的DateUtils是封装了一些基于时间转换常见操作的在线性安全、方便使用的工具类。 DateUtils提供了…

    Java 2023年5月20日
    00
  • commons fileupload实现文件上传的实例代码

    当我们需要在Web应用程序中实现文件上传功能时,可以使用Apache Commons FileUpload库来实现这个功能。下面将详细讲解如何使用该库来实现文件上传功能,包括添加依赖、编写实现代码等过程。 添加依赖 首先,在Maven项目中添加以下依赖项: <dependency> <groupId>commons-fileuploa…

    Java 2023年6月15日
    00
  • 一文带你了解Java万物之基之Object类

    一文带你了解Java万物之基之Object类 Java语言中的每个类都是继承自基类Object,因此Object类是所有类的父类。这篇文章将会介绍Object类的常用方法和示例说明。 常用方法 equals Object类的equals方法用于比较两个对象是否相等。Object类的equals方法使用的是比较对象的地址值,即两个对象的地址是否相同,若相同则返…

    Java 2023年5月26日
    00
  • Tomcat中catalina.out 和 catalina.log的区别和用途详解

    Tomcat是一个基于Java的开源Web服务器,它是一种轻量级应用服务器,功能强大,广泛应用于Web应用程序的开发和部署。Tomcat中的catalina.out和catalina.log是服务器日志文件,这两个文件虽然非常重要,但作用有一些差别。 catalina.out catalina.out是Tomcat的标准输出文件,它记录了Tomcat启动、停…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部