JavaWeb文件上传下载功能示例解析

JavaWeb文件上传下载功能示例解析

文件上传功能

基本原理

文件上传是将本地文件发送到服务器保存的过程。通过HTTP协议,客户端将文件数据发送到服务器端,服务器接收到数据后将其存储到指定的目录中。

在本例中,我们使用了Apache的文件上传组件commons-fileupload来实现文件上传功能。

实现步骤

  1. 引入相关依赖。

xml
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

  1. 在表单中设置enctype属性。

```html



```

  1. 在Servlet中获取上传文件并保存。

java
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = item.getName();
String filePath = "/path/to/save/" + fileName;
File file = new File(filePath);
item.write(file);
}
}

示例

在本示例中,我们建立一个名为FileUpload的JavaWeb项目,实现文件上传功能。

  1. 新建一个Servlet并加上@WebServlet注解。

```java
import javax.servlet.ServletException;
import javax.servlet.annotation.;
import javax.servlet.http.
;

import org.apache.commons.fileupload.;
import org.apache.commons.fileupload.disk.
;
import org.apache.commons.fileupload.servlet.*;

import java.io.;
import java.util.
;

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

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
       for (FileItem item : items) {
           if (!item.isFormField()) {
               String fileName = item.getName();
               String filePath = "/path/to/save/" + fileName;
               File file = new File(filePath);
               item.write(file);
           }
       }
       response.getWriter().write("Upload Success!");
   }

}
```

  1. 在WebContent目录下新建一个upload.jsp文件。

```html



File Upload Example




```

  1. 启动服务器,并在浏览器中输入http://localhost:8080/FileUpload/upload.jsp即可上传文件。

文件下载功能

基本原理

文件下载是将服务器上的文件发送到客户端本地保存的过程。通过HTTP协议,服务器将文件的二进制数据发送到客户端,客户端接收到数据后将其存储到指定的目录中。

在JavaWeb中,我们可以使用ServletOutputStream类将文件的二进制数据输出到客户端。

实现步骤

  1. 设置响应头部信息。

java
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

  1. 读取文件数据并输出到客户端。

java
InputStream in = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
in.close();

示例

在本示例中,我们在FileUpload项目中添加一个DownloadServlet,实现文件下载功能。

  1. 新建一个Servlet并加上@WebServlet注解。

```java
import javax.servlet.ServletException;
import javax.servlet.annotation.;
import javax.servlet.http.
;

import java.io.;
import java.net.
;

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

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       String fileName = request.getParameter("fileName");
       String filePath = "/path/to/save/" + fileName;

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

       InputStream in = new FileInputStream(filePath);
       OutputStream out = response.getOutputStream();
       byte[] buffer = new byte[1024];
       int len = 0;
       while ((len = in.read(buffer)) > 0) {
           out.write(buffer, 0, len);
       }
       in.close();
   }

}
```

  1. 在WebContent目录下新建一个download.jsp文件。

```html



File Download Example

File List

    <% File dir = new File("/path/to/save/"); String[] files = dir.list(); if (files != null && files.length > 0) {
    for (String fileName : files) {
    out.print("

  • " + fileName + "
  • ");
    }
    } else {
    out.print("

  • Empty!
  • ");
    }
    %>


```

  1. 启动服务器,并在浏览器中输入http://localhost:8080/FileUpload/download.jsp即可下载文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb文件上传下载功能示例解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java的final修饰符

    final 实例域 可以将实例域定义为 final。对于 final 域来说,构建对象时必须初始化 final 实例域,构造对象之后就不允许改变 final 实例域的值了。也就是说,必须确保在每一个构造器执行之后,final 实例域的值被设置,并且在后面的操作中,不能够再对 final 实例域进行修改。 例如,可以将 Employee 类中的 name 域声…

    Java 2023年4月25日
    00
  • Java实现解析ini文件对应到JavaBean中

    要实现解析ini文件对应到JavaBean中,可以通过以下步骤进行: 1.引入依赖 要解析ini文件可以使用jedis的依赖,可以在pom.xml文件中加入以下代码来引入依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis<…

    Java 2023年6月15日
    00
  • SpringBoot+SpringSecurity+jwt实现验证

    下面我会提供一个基于Spring Boot、Spring Security 和 JSON Web Token(JWT)的认证示例。 一、什么是JWT JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种简单的、自包含的方式,用于在通过网络进行传输的两个实体之间安全传递信息。它被称为自包含是因为JWT包含了所有身份验证(Aut…

    Java 2023年5月20日
    00
  • java中flatMap用法完整示例

    下面是“java中flatMap用法完整示例”的完整攻略。 什么是flatMap flatMap 是一个操作符,它可以将一个 Observable 发射的数据集合转换成一个新的 Observable 对象,其中每个数据被变换为其他的数据(也可以是 0 个或多个数据)后,再重新发射出去。这些数据最终是被合并在一起作为一个单一的、合并后的数据序列进行发射的。 f…

    Java 2023年5月27日
    00
  • Java8的Lambda表达式你真的会吗

    Java8的Lambda表达式攻略 Lambda表达式是什么 Lambda表达式是Java8引入的一种新的语法,它可以用来代替一些常规的匿名内部类,并且更加简洁明了。简单来说,Lambda表达式就是一种匿名函数。 Lambda表达式的语法 Lambda表达式的语法如下: (parameters) -> expression 或 (parameters)…

    Java 2023年5月26日
    00
  • Java FileWriter输出换行操作

    下面是关于Java FileWriter输出换行操作的详细讲解: 什么是FileWriter FileWriter 是一个用来写入字符流的便利类。它可以将文本写入到文件中,如果文件不存在则会自动创建。与 FileOutputStream 类似,你可以指定写入数据的文件名和写入数据时是否追加到文件的末尾。 FileWriter 输出换行 在Java中,换行的表…

    Java 2023年5月26日
    00
  • Java的Struts框架报错“ControllerConfigException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“ControllerConfigException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此错误。在这种情况下,需要检查文件以解决此问题。 控制器错误:如果控制器不正确,则可能会出现此错误。在这种情况下,需要检查控制器以解决此问题。 以下是两个实例: 例 1 如…

    Java 2023年5月5日
    00
  • java 获取一组数据中的最大值和最小值

    Java 获取一组数据中的最大值和最小值 要想在Java中获取一组数据中的最大值和最小值,可以使用以下方法。 方法1:通过循环比较 定义一个变量 max,用于存放最大值,初始值为当前数组的第一个元素。 定义一个变量 min,用于存放最小值,初始值为当前数组的第一个元素。 使用循环遍历数组,对于每一个数组元素,分别与 max 和 min 进行比较,如果大于 m…

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