javaweb实现文件上传示例代码

下面是javaweb实现文件上传的完整攻略:

1. 准备工作

在实现文件上传之前,需要先通过一些准备工作来确保程序能够正确运行:

1.1 配置servlet-api.jar文件

确保下载并配置servlet-api.jar文件,该文件包含了用于编写JavaWeb开发的类。

1.2 配置服务器环境

使用基于Java的web服务器(如Tomcat)来运行JavaWeb应用,确保能正常快速启动服务器。

1.3 熟悉文件上传相关类的使用

JavaWeb提供了一些用于文件上传的类和方法,需要熟悉它们的使用。

2. 实现文件上传的步骤

实现文件上传的步骤如下:

2.1 获取上传文件

使用FileItemFactory类的实现类DiskFileItemFactory,可以获取上传文件的相关信息并保存到一个List<FileItem>集合中,其中FileItem表示上传的每个文件。

//创建FileItemFactory实例
FileItemFactory factory = new DiskFileItemFactory();
//创建servlet文件上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
//定义上传文件大小
upload.setFileSizeMax(10 * 1024 * 1024);//10M
//获取上传文件列表
List<FileItem> uploadItems = upload.parseRequest(request);

2.2 处理上传文件

对于每一个上传的文件,可以通过FileItem类提供的方法获取文件名、文件大小、文件类型、上传时间等相关信息。同时可通过FileItem.write()方法将文件保存到本地磁盘。

//遍历上传的文件
for(FileItem item : uploadItems) {
    //获取原文件名
    String fileName = item.getName();
    //获取文件大小
    Long fileSize = item.getSize();
    //获取文件类型
    String contentType = item.getContentType();
    //获取上传时间
    Date uploadDate = new Date(item.getLastModifiedTime());
    //保存文件到本地磁盘(假设保存到D盘upload目录下)
    File file = new File("D:/upload/" + fileName);
    item.write(file);
}

3. 示例说明

3.1 实现单个文件上传

在页面中添加一个文件上传表单,用户选择上传的文件后,将其提交到服务器,在服务器端解析文件并保存到本地磁盘。

<form action="UploadServlet" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="file"><br>
    <input type="submit" value="上传">
</form>

在服务器端实现代码如下:

public class UploadServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建FileItemFactory实例
        FileItemFactory factory = new DiskFileItemFactory();
        //创建servlet文件上传对象
        ServletFileUpload upload = new ServletFileUpload(factory);
        //定义上传文件大小
        upload.setFileSizeMax(10 * 1024 * 1024);//10M
        try {
            //获取上传文件列表
            List<FileItem> uploadItems = upload.parseRequest(request);
            //遍历上传的文件
            for(FileItem item : uploadItems) {
                //获取文件名
                String fileName = item.getName();
                //保存文件到本地磁盘(假设保存到D盘upload目录下)
                File file = new File("D:/upload/" + fileName);
                item.write(file);
            }
            response.getWriter().println("上传成功!");
        } catch (Exception e) {
            response.getWriter().println("上传失败!");
        }
    }
}

3.2 实现多个文件上传

与单个文件上传类似,只需要在HTML表单中添加多个文件上传框即可。

<form action="BatchUploadServlet" method="post" enctype="multipart/form-data">
    第1个文件:<input type="file" name="file1"><br>
    第2个文件:<input type="file" name="file2"><br>
    第3个文件:<input type="file" name="file3"><br>
    <input type="submit" value="上传">
</form>

在服务器端,只需要对上传的文件进行遍历保存即可。

public class BatchUploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建FileItemFactory实例
        FileItemFactory factory = new DiskFileItemFactory();
        //创建servlet文件上传对象
        ServletFileUpload upload = new ServletFileUpload(factory);
        //定义上传文件大小
        upload.setFileSizeMax(10 * 1024 * 1024);//10M
        try {
            //获取上传文件列表
            List<FileItem> uploadItems = upload.parseRequest(request);
            //遍历上传的文件
            for(FileItem item : uploadItems) {
                //获取文件名
                String fileName = item.getName();
                //保存文件到本地磁盘(假设保存到D盘upload目录下)
                File file = new File("D:/upload/" + fileName);
                item.write(file);
            }
            response.getWriter().println("上传成功!");
        } catch (Exception e) {
            response.getWriter().println("上传失败!");
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javaweb实现文件上传示例代码 - Python技术站

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

相关文章

  • 详解Maven多模块打包遇到的问题解决方法

    当我们使用Maven进行多模块开发时,需要用到Maven的多模块打包功能来打包整个项目,但是在实际使用过程中,往往会遇到一些问题。本文将详解使用Maven多模块打包时可能会遇到的问题,并给出解决方法。 问题一:打包时找不到依赖 在使用Maven进行多模块开发时,我们将项目拆分成多个模块,每个模块都有自己的pom.xml文件来管理依赖。但是当我们使用Maven…

    Java 2023年5月19日
    00
  • 使用spring工厂读取property配置文件示例代码

    首先,需要创建一个property配置文件,我们以”config.properties”为例,文件内容如下: database.url=jdbc:mysql://localhost:3306/mydatabase database.username=root database.password=123456 接下来,我们需要在spring的配置文件中引入该p…

    Java 2023年5月23日
    00
  • jsp中Action使用session方法实例分析

    对于这个问题,我将介绍JSP中使用Action对象进行会话控制的方法,并附上两个实例。 什么是Action对象? Action是org.apache.struts.action.Action类的一个实例,是 Struts 框架中的一个关键组成部分。Action对象是用于处理HTTP请求的 Java 类,在 Struts 架构中起到中心作用。Action通过从…

    Java 2023年5月20日
    00
  • Java使用junit框架进行代码测试过程详解

    Java使用junit框架进行代码测试过程详解 什么是junit框架 junit框架是Java语言的一种单元测试框架。它提供了一种便捷的方式来测试Java程序代码是否符合预期。使用junit框架,开发人员可以编写一些测试用例来验证程序代码的正确性和可靠性,从而提高软件的质量、可维护性和可扩展性。 如何使用junit框架进行代码测试 使用junit框架进行代码…

    Java 2023年5月23日
    00
  • java实现字符串转String数组的方法示例

    让我来详细讲解一下“java实现字符串转String数组的方法示例”的完整攻略。 背景 在Java开发中,字符串和数组都是常见的数据类型。当我们需要对一个字符串进行拆分、处理时,常常需要将字符串转换为数组,以方便进行操作。那么,如何实现字符串转数组的操作呢? 方法一:使用String类的split方法 Java中的String类提供了split方法,它可以将…

    Java 2023年5月26日
    00
  • Java中实现两个线程交替运行的方法

    实现两个线程交替运行有多种方法,以下是其中两种方法的详细讲解。 方法一:使用wait()和notify()方法 使用wait()和notify()方法可以实现两个线程之间的通信。wait()方法会让当前线程进入等待状态,直到其他线程调用notify()方法唤醒它。在这种情况下,可以使用一个共享的锁对象来控制线程的执行顺序。具体的实现步骤如下: 1.定义一个共…

    Java 2023年5月18日
    00
  • 详解ArrayBlockQueue源码解析

    详解ArrayBlockingQueue源码解析 ArrayBlockingQueue是Java集合框架中的阻塞队列,该队列的容量固定不变,而且是有界的。它是线程安全的,任何时刻只有一个线程能够访问队列,当队列已满时插入元素的线程会被阻塞,当队列为空时,获取元素的线程会被阻塞。 基本特性 固定容量大小 先进先出 线程安全 阻塞队列 主要方法 ArrayBlo…

    Java 2023年5月26日
    00
  • A标签触发onclick事件而不跳转的多种解决方法

    当我们在HTML中使用标签时通常会使用它来跳转到其他页面。但是,如果我们希望在用户点击这个链接时触发一些功能,而不是跳转到其他页面,我们可以使用onclick事件。本文将介绍几种A标签触发onclick事件而不跳转的多种解决方法。 方法一:Javascript:void(0) 使用Javascript:void(0)作为标签的href值,它可以防止页面跳转,…

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