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

yizhihongxing

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日

相关文章

  • JDK1.7 Paths,Files类实现文件夹的复制与删除的实例

    首先,我们需要了解一下JDK1.7引入的Paths和Files类,它们提供了更加方便的文件和路径操作方法。 1. 复制文件夹 示例1 让我们看一下如何使用Paths和Files类来实现复制整个文件夹的功能。 import java.io.IOException; import java.nio.file.Files; import java.nio.file…

    Java 2023年5月19日
    00
  • Java String之contains方法的使用详解

    Java String 之 contains 方法使用详解 在 Java 中,String 类是最常用的类之一,而 String 类的 contains 方法则是其中常用的方法之一。本篇文章详细讲解了 Java String 类的 contains 方法使用的注意点以及示例演示。 contains 方法的作用 contains 方法的作用是判断某个字符串是否…

    Java 2023年5月26日
    00
  • Java获取当前时间年月日的方法

    获取当前时间年月日是Java中比较常见的操作,下面将介绍几种获取当前时间年月日的方法。 方法一 使用java.util.Date类获取当前时间,然后通过SimpleDateFormat类格式化输出年月日。 import java.text.SimpleDateFormat; import java.util.Date; public class GetCur…

    Java 2023年5月20日
    00
  • jQuery+jsp实现省市县三级联动效果(附源码)

    实现省市县三级联动效果是Web开发中经常需要的功能之一。在这个过程中,jQuery 和 jsp 无疑是非常好的组合,因为 jQuery 可以方便的获取和操作DOM元素,jsp则具有动态生成html页面的优势。本文将分享一篇详细的攻略,教你如何使用 jQuery 和 jsp 实现省市县三级联动效果,并附上完整的源码。 一、前置知识 在阅读本篇攻略前,你需要具备…

    Java 2023年6月15日
    00
  • 如何使用MyBatis框架实现增删改查(CRUD)操作

    使用MyBatis框架实现增删改查(CRUD)操作是非常简单的,在下面的攻略中,我将展示如何使用MyBatis框架来完成这些操作。 准备工作 在开始使用MyBatis框架之前,你需要完成以下准备工作: 确定数据库连接信息,包括数据库名称、用户名和密码等。 安装MyBatis框架和相关依赖。 创建数据库表 首先我们需要创建一张用于存储数据的表,例如创建一个名为…

    Java 2023年5月20日
    00
  • IDEA 启动 Tomcat 项目输出乱码的解决方法

    下面是关于“IDEA 启动 Tomcat 项目输出乱码的解决方法”的完整攻略: 1. 问题描述 在使用 IDEA 启动 Tomcat 项目时,控制台输出的内容是一些乱码,影响了开发和调试的效率。 2. 解决方法 2.1 修改 Tomcat 服务器配置 在 Tomcat 服务器配置中,添加一些 JVM 参数,来指定字符集和编码方式。 步骤如下: 在 IDEA …

    Java 2023年5月19日
    00
  • Java反射 Field类的使用全方位解析

    Java反射 Field类的使用全方位解析 什么是Java反射? Java反射是指在程序运行时通过调用对象的方法来获取对象的内部信息并动态调用对象方法的能力。Java反射的核心是java.lang.reflect包中的类和接口。Java反射使得可以对类、方法、属性等进行动态操作,这样可以在编译时无法确定的情况下执行一些操作。 Field类的作用 Java中的…

    Java 2023年5月20日
    00
  • springboot整合springsecurity与mybatis-plus的简单实现

    那么让我们来探讨一下如何实现“springboot整合springsecurity与mybatis-plus的简单实现”,包含以下步骤: 1.创建一个springboot项目,添加相关依赖 为了实现该功能,我们首先需要创建一个springboot项目,并添加所需的依赖项。在pom.xml文件中添加以下依赖项: <dependency> <g…

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