JavaServlet的文件上传和下载实现方法

下面是详细讲解“JavaServlet的文件上传和下载实现方法”的完整攻略。

一、文件上传的实现

1. HTML页面的制作

我们需要先准备一个用于上传文件的HTML页面。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>文件上传</title>
</head>
<body>

  <form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="上传"/>
  </form>

</body>
</html>

2. Java Servlet的实现

然后,我们需要实现一个Java Servlet,用来接收并处理上传的文件。

import java.io.File;
import java.io.IOException;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/upload")
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        // 获取上传的文件部件
        Part part = request.getPart("file");

        // 获取文件名
        String fileName = part.getSubmittedFileName();

        // 获取服务器上的绝对路径
        String uploadPath = request.getServletContext().getRealPath("/uploads");

        // 生成唯一的文件名
        String uuid = UUID.randomUUID().toString();
        String filePath = uploadPath + "/" + uuid + "_" + fileName;

        // 将上传的文件写入服务器的磁盘中
        part.write(filePath);

        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("文件上传成功!");
    }
}

3. 效果展示

将以上的HTML和Java代码保存在相应的文件中,部署在Web容器中运行,即可看到上传文件的效果,上传的文件会保存在服务器的磁盘中。

二、文件下载的实现

1. Java Servlet的实现

我们需要实现一个Java Servlet,用来接收并处理下载请求。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        // 获取下载的文件名
        String fileName = request.getParameter("fileName");

        // 获取服务器上的绝对路径
        String downloadPath = request.getServletContext().getRealPath("/uploads");

        // 构造要下载的文件对象
        File file = new File(downloadPath + "/" + fileName);

        // 设置文件的响应类型
        response.setContentType("application/octet-stream");

        // 设置文件的大小
        response.setContentLength((int) file.length());

        // 设置文件的响应头
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

        // 输出文件内容到响应流中
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buffer = new byte[1024];
        int len;
        while ((len = bis.read(buffer)) != -1) {
            bos.write(buffer, 0, len);
        }
        bis.close();
        bos.close();
    }
}

2. HTML页面的制作

最后,我们需要准备一个用于下载文件的HTML页面。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>文件下载</title>
</head>
<body>

  <h1>文件列表</h1>

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

</body>
</html>

3. 效果展示

将以上的HTML和Java代码保存在相应的文件中,部署在Web容器中运行,即可看到下载文件的效果,点击HTML页面上的文件名即可下载服务器中相应的文件。

以上就是JavaServlet的文件上传和下载实现方法的详细攻略,希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaServlet的文件上传和下载实现方法 - Python技术站

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

相关文章

  • JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现

    下面是详细的攻略: JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现 背景介绍 JSON是一种轻量级的数据交换格式,常用于Web应用中的数据传输。在实际开发中,我们常常需要将JSON数据转换为Java对象,并将这些对象存储到数据库中。而JSON数据可能比较复杂,包含嵌套的数据结构,如树形结构数据。因此,本篇攻略将介绍如何使用Jav…

    Java 2023年5月26日
    00
  • jsp中sitemesh修改tagRule技术分享

    下面我将详细讲解“JSP中Sitemesh修改tagRule技术分享”的完整攻略。 简介 Sitemesh是一款用于Web页面装饰的框架,可以将公共的页面模板与动态生成的内容进行分离。在使用Sitemesh的过程中,可以通过修改tagRule来自定义标签的使用规则,并且可以根据需求进行灵活调整。 修改tagRule的步骤 1. 创建自定义的tagRule 在…

    Java 2023年6月15日
    00
  • Java中的集合框架是什么?

    Java中的集合框架是一个内置的数据结构库,它提供了一组接口和类,用于处理和管理元素的类集合。Java集合框架有助于开发人员以更高效、更灵活和更可扩展的方式处理复杂数据。 Java集合框架中的类和接口被组织成三个主要的继承层次结构:Collection、Map 和 Iterator。其中,Collection是表示一组对象的根接口,Map是表示一组键值对(k…

    Java 2023年4月27日
    00
  • SpringData JPA的常用语法汇总

    下面我将为你详细讲解SpringData JPA的常用语法汇总。 1.概述 SpringData JPA是Spring框架的一个子项目,它提供了一种非常方便的方式来简化JPA的使用,降低了编写JPA代码的复杂度。SpringData JPA主要是基于JPA规范来实现的,并对JPA规范进行了一些扩展,提供了一些更为方便的API和方法。 2.常用语法汇总 2.1…

    Java 2023年5月20日
    00
  • Java Hibernate使用SessionFactory创建Session案例详解

    下面是详细讲解“Java Hibernate使用SessionFactory创建Session案例详解”的攻略,包括了相关的示例代码。 什么是SessionFactory? SessionFactory是Hibernate框架中一个重要的接口,用来创建Session。在使用Hibernate进行开发时,我们通常都会使用SessionFactory来获取一个S…

    Java 2023年5月19日
    00
  • SSH框架网上商城项目第7战之整合Struts2和Json

    下面是 “SSH框架网上商城项目第7战之整合Struts2和Json”的完整攻略: 1. 概述 本文是在使用SSH框架搭建在线商城的基础上,介绍了如何整合Struts2和Json来实现后端与前端之间的数据交互。 2. 安装插件 首先,我们需要在项目中引入Struts2和Json插件,可以在pom.xml文件中添加以下依赖: <dependency&gt…

    Java 2023年5月20日
    00
  • springboot 自定义权限标签(tld),在freemarker引用操作

    下面是完整攻略: 1. 首先创建Spring Boot项目 可以使用Spring Initializr创建一个新的Spring Boot项目,选择Web和Freemarker作为依赖项。 2. 添加依赖项 在pom.xml文件中添加以下依赖项: <dependency> <groupId>org.springframework.boo…

    Java 2023年6月15日
    00
  • Nginx的伪静态配置中使用rewrite来实现自动补全的实例

    以下是详细的攻略: 什么是Nginx伪静态配置? Nginx伪静态配置又叫做URL重写,可以通过对URL的转换来实现对客户端的透明隐藏,防止暴露后端服务器的真实地址。通常情况下,我们使用rewrite指令来实现伪静态配置。 如何使用rewrite实现URL自动补全? 对于URL自动补全实现,我们可以使用rewrite来将用户输入的不完整URL进行自动补全,以…

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