Jsp+Servlet实现文件上传下载 删除上传文件(三)

这篇攻略是介绍如何使用 JSP 和 Servlet 来实现文件上传下载以及删除上传文件。其中包含以下内容:

  1. 上传文件处理(上传文件存储,上传文件名称处理)
  2. 下载文件处理(下载文件存储)
  3. 删除文件处理

除此之外,还会用到一些库和工具,如 commons-fileupload、commons-io、bootstrap。

上传文件处理

上传文件存储

在上传文件之前,需要在项目 WebContent 目录下创建 upload 文件夹,保存上传的文件。

String uploadFilePath = request.getSession().getServletContext()
  .getRealPath("/upload/"); // 获取上传路径
File uploadDir = new File(uploadFilePath);
if (!uploadDir.exists()) {
  uploadDir.mkdir(); // 如果目录不存在,则创建目录
}

上传文件名称处理

上传文件的名称可能会包含中文等特殊字符,需要对其进行处理。可以使用 common-io 库来解决这个问题。

String filename = item.getName();
String saveFilename = UUID.randomUUID().toString() + "_" + 
  FilenameUtils.getName(filename); // 生成随机的文件名
File saveFile = new File(uploadFilePath, saveFilename);
item.write(saveFile); // 保存文件

使用 FilenameUtils.getName() 方法来获取原始文件名,然后拼接一个随机生成的字符串作为新文件名。最后,将上传的文件保存到 upload 文件夹中。

下载文件处理

下载文件时,需要根据文件名查询存储路径,并将文件的内容以流的方式写入到 HttpServletResponse 中。

String filePath = request.getSession().getServletContext()
  .getRealPath("/upload/"); // 获取文件路径
File file = new File(filePath + File.separator + filename);
if (file.exists()) {
  response.setContentType("application/octet-stream"); // 设置文件类型
  response.setHeader("Content-Disposition", "attachment;filename=" + 
    new String(filename.getBytes("GB2312"), "ISO-8859-1")); // 设置文件名
  InputStream in = null;
  OutputStream out = null;
  try {
    in = new FileInputStream(file);
    out = response.getOutputStream();
    byte[] buffer = new byte[1024];
    int len;
    while ((len = in.read(buffer)) > 0) {
      out.write(buffer, 0, len);
    }
    out.flush();
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    if (in != null) {
      try {
        in.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    if (out != null) {
      try {
        out.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

删除文件处理

删除文件时,需要根据文件名查询存储路径,并使用 File 类的 delete() 方法来删除文件。

String filePath = request.getSession().getServletContext()
  .getRealPath("/upload/"); // 获取文件路径
File file = new File(filePath + File.separator + filename);
if (file.exists()) {
  file.delete();
  // 返回删除成功的信息
} else {
  // 返回文件不存在的信息
}

使用 File 类的 delete() 方法可以直接删除文件。注意,如果文件不存在,需要返回相应的错误信息。

示例代码:

在实际项目中,可能需要使用到 Bootstrap 等库来美化页面,这里就不再展示相关内容。完整的示例代码可以参考 Github

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jsp+Servlet实现文件上传下载 删除上传文件(三) - Python技术站

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

相关文章

  • 史上最全MyBatis面试题及答案

    史上最全MyBatis面试题及答案攻略 什么是MyBatis?它的作用是什么? MyBatis是一个持久层框架,用于简化Java应用程序中的数据库交互。它使用XML或注解来描述对象映射器,从而实现将Java对象映射为数据库表中的数据。MyBatis的主要作用是:简化数据库交互代码的编写,防止SQL注入攻击,提高代码的可维护性和可读性。 MyBatis中的Ma…

    Java 2023年5月20日
    00
  • java实现二维数组转json的方法示例

    下面是详细讲解“java实现二维数组转json的方法示例”的完整攻略: 1. 什么是JSON 首先,我们需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写,也易于机器解析和生成。它以键值对的形式对数据进行描述,是一种简洁但非常实用的数据表示形式。 2. 如何实现二维数组转JS…

    Java 2023年5月26日
    00
  • struts2入门Demo示例

    下面为你详细讲解“struts2入门Demo示例”的完整攻略: 环境搭建 首先,需要搭建Java环境和Tomcat服务器环境,并下载Struts2框架。这里以Windows环境下为例,具体步骤如下: 安装Java环境 下载JDK并进行安装,自定义安装目录。 配置环境变量JAVA_HOME,值为JDK安装目录路径,例如 C:\Program Files\Jav…

    Java 2023年5月20日
    00
  • SpringBoot集成Beetl后统一处理页面异常的方法

    为了让 SpringBoot 集成 Beetl 后能够统一处理页面异常,需要实现一个全局异常处理器。以下是实现步骤: 1. 引入 Beetl 和 Beetl Spring Boot Starter 在 pom.xml 文件中引入 Beetl 和 Beetl Spring Boot Starter: <dependency> <groupId…

    Java 2023年5月27日
    00
  • Ajax+Servlet实现无刷新下拉联动效果

    下面是详细的攻略。 一、什么是无刷新下拉联动效果 “无刷新下拉联动效果”指的是在一个下拉框中选择某一项时,另一个下拉框中的内容会实时地发生改变,而不需要重新加载整个页面。Ajax+Servlet是实现这一效果的主要技术手段。 二、实现步骤 1.创建HTML页面 首先,需要在HTML页面中创建两个下拉框及其对应的显示文本框。 <form> <…

    Java 2023年6月15日
    00
  • Java实现多文件上传功能

    Java实现多文件上传功能攻略 本文主要介绍如何使用Java来实现多文件上传功能。 1. 前端实现 前端部分我们可以使用HTML表单来实现多文件上传的界面: <form action="/upload" method="post" enctype="multipart/form-data"&g…

    Java 2023年5月19日
    00
  • Angular.Js中ng-include指令的使用与实现

    Angular.js中ng-include指令的使用与实现 ng-include是Angular.js提供的一个指令,用于在页面中引入外部HTML文件。 使用方法 我们可以在需要引用的地方,使用ng-include指令,如下所示: <div ng-include="’path/to/your/template.html’">&…

    Java 2023年6月15日
    00
  • 关于Lombok简化编码使用及说明

    关于Lombok简化编码使用及说明 简介 Lombok是一种可以帮助Java程序员通过使用注解来消除Java Bean类中的大量样板代码的工具,例如getters、setters和构造函数等。Lombok还提供了一些有用的注解,如@Data和@Builder,使Java开发更加便捷和简洁。 安装 在Maven项目中使用Lombok只需要在pom.xml中添加…

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