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

yizhihongxing

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日

相关文章

  • SpringBoot实现api加密的示例代码

    什么是API加密? API加密是指对API访问时的数据进行加密处理,确保API的安全性,确保数据在传输过程中不被恶意篡改。 实现API加密的原理 使用SpringBoot框架实现API加密,常用的加密算法有MD5和SHA1。 MD5加密算法可以用以下代码实现: import java.security.MessageDigest; import java.s…

    Java 2023年5月20日
    00
  • java JVM原理与常识知识点

    Java JVM原理与常识知识点 Java虚拟机(Java Virtual Machine,JVM)是Java语言实现跨平台的核心部件。它是一个用来执行Java字节码的虚拟机,Java源文件被编译成能够运行在JVM上的字节码文件。因此,深入了解JVM的原理是Java编程中必不可少的一部分。 本文将从以下几个方面进行讲解Java JVM原理与常识知识点:- J…

    Java 2023年5月24日
    00
  • Java Apache Commons报错“InterruptedIOException”的原因与解决方法

    当使用Java的Struts框架时,可能会遇到“ActionServletMappingException”错误。这个错误通常由以下原因之一起: ActionServlet配置错误:如果ActionServlet配置错误,则可能会出现此错误。在这种情况下,需要检查ActionServlet配置以解决此问题。 ActionServlet无效:如果ActionS…

    Java 2023年5月5日
    00
  • 微信小程序实现手写签名(签字版)

    实现手写签名的微信小程序,其主要思路就是利用画布(canvas)实现用户在手机上进行手写签名的功能。下面是具体的实现攻略: 步骤一:创建画布(canvas) 首先,在小程序页面的wxml文件中创建一个canvas,如下所示: <canvas canvas-id="myCanvas" style="width: 100%; …

    Java 2023年5月23日
    00
  • URL中允许携带sessionid带来的安全隐患分析

    URL中允许携带sessionid是通过URL参数的方式,将sessionid作为一个参数值添加在URL末尾,这样服务器就能够识别出用户的身份信息,从而为用户提供个性化的服务。但是,这种方式存在一定的安全隐患。 一、URL传递sessionid的安全隐患 1.1 session劫持攻击 通过URL传递sessionid存在被劫持的风险。黑客可以通过一些手段获…

    Java 2023年6月15日
    00
  • Java采用setAsciiStream方法检索数据库指定内容实例解析

    让我来详细讲解一下“Java采用setAsciiStream方法检索数据库指定内容实例解析”这个主题。 什么是setAsciiStream方法 在Java JDBC编程中,我们可以使用setAsciiStream方法设置指定内容,该方法是在PreparedStatement接口内定义的方法。setAsciiStream方法的作用是将给定的ASCII输入流转换…

    Java 2023年5月19日
    00
  • 微信小程序中weui用法解析

    微信小程序中weui用法解析 什么是weui WeUI 是微信官方推出的一个基于Vue.js和Webpack构建的一套移动端UI组件库,适用于微信内网页开发和微信小程序开发。WeUI拥有丰富的UI组件,涉及常用的表单、列表、卡片、操作反馈等等。使用WeUI可以极大地提高小程序的开发效率和用户体验,帮助开发人员快速地开发出适应微信生态的小程序。 在微信小程序中…

    Java 2023年5月30日
    00
  • 从零开始SSM搭建步骤(图文)

    请看下面的详细讲解: 1. 环境配置 JDK的安装 搜索并下载JDK并安装,然后配置系统环境变量。 Maven的安装 搜索并下载Maven并安装,然后配置系统环境变量,并设置settings.xml文件。 Tomcat的安装 搜索并下载Tomcat并安装,然后配置Tomcat,发布一个空的Web应用 2. SSM框架搭建 创建Maven项目 使用Maven创…

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