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日

相关文章

  • ASP.NET中Webservice安全 实现访问权限控制

    在ASP.NET中使用WebService并保证安全性,需要实现访问权限控制。下面是实现这一目标的攻略,其中使用了两个示例。 1. 在Web.config文件中配置安全控制 在ASP.NET中,可以使用Web.config文件进行全局配置和安全控制。我们可以在Web.config文件中配置以下的内容,来限制WebService的访问权限: <syste…

    Java 2023年5月19日
    00
  • 利用keytools为tomcat 7配置ssl双向认证的方法

    下面是详细的“利用keytools为tomcat 7配置ssl双向认证的方法”的攻略: 一、生成证书文件 首先,我们需要生成证书文件,可以使用Java自带的keytool工具来完成此步骤。以下是生成证书文件的命令: keytool -genkeypair -alias client -keyalg RSA -keysize 2048 -sigalg SHA2…

    Java 2023年5月19日
    00
  • 详解SpringBoot 添加对JSP的支持(附常见坑点)

    详解SpringBoot 添加对JSP的支持(附常见坑点) 在使用Spring Boot开发Web应用程序时,我们可能需要使用JSP来渲染视图。但是,Spring Boot默认不支持JSP,需要进行一些配置才能使用。本文将详细介绍如何添加对JSP的支持,并列举一些常见的坑点。 1. 添加对JSP的支持 要添加对JSP的支持,我们需要在pom.xml文件中添加…

    Java 2023年5月18日
    00
  • 如何通过JVM角度谈谈Java的clone操作

    那么让我们来详细讲解如何通过JVM角度谈谈Java的clone操作。 什么是Java的clone操作? Java的clone操作是用于复制Java对象的一种方式。在对一个Java对象进行clone操作时,会创建一个新的对象,新对象与原对象的内容相同,但是两个对象在内存中的地址是不同的。 clone操作的实现方式 Java的clone操作是通过实现Clonea…

    Java 2023年5月26日
    00
  • eclipse下整合springboot和mybatis的方法步骤

    下面是整合Spring Boot和Mybatis的方法步骤: 准备工作 安装Eclipse IDE,确保你已经安装了Eclipse插件“Spring Tools 4”,这个插件可以大大简化整合的过程。 创建一个基于Maven的Spring Boot项目,在pom.xml文件中添加如下依赖项: <dependencies> <!– Spri…

    Java 2023年5月20日
    00
  • Java Apache POI报错“NotOfficeXmlFileException”的原因与解决办法

    “NotOfficeXmlFileException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 文件格式错误:如果文件不是Office Open XML格式,则可能会出现此异常。例如,可能会尝试读取旧版的Microsoft Office文件或其他非Office Open XML格式的文件。 以下是两个实例: 例1 如果文件格…

    Java 2023年5月5日
    00
  • Eclipse创建tomcat实现过程原理详解

    下面我会详细讲解“Eclipse创建tomcat实现过程原理详解”的完整攻略,主要分为以下几个步骤: 步骤一:下载安装Eclipse和Tomcat 首先需要下载安装Eclipse和Tomcat。Eclipse是一款非常流行的Java开发工具,而Tomcat是常用的Java Web服务器。 下载Eclipse:可以在Eclipse官网(https://www.…

    Java 2023年5月19日
    00
  • jQuery使用$.ajax提交表单完整实例

    下面给出一份详细的jQuery使用$.ajax提交表单的攻略。 1. 准备工作 首先你需要引入jQuery库文件,否则无法使用$.ajax方法。你可以在html页面的头部中加入以下代码段。 <head> <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js&…

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