两种java文件上传实例讲解

下面是详细讲解“两种java文件上传实例讲解”的攻略:

一、基于Spring MVC框架的文件上传实例

1. 在Maven项目配置中添加以下依赖:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.3.1.RELEASE</version>
</dependency>

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

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.5</version>
</dependency>

2. 配置Spring MVC配置文件

在spring配置文件中,添加multipartResolver Bean,用来处理文件上传的请求。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="50000000"/>
</bean>

3. 编写Controller类

@Controller
public class UploadFileController {
  @RequestMapping(value="/uploadFile", method=RequestMethod.POST)
  public String uploadFileHandler(@RequestParam("file") MultipartFile file) {

    if (!file.isEmpty()) {
      try {
          byte[] bytes = file.getBytes();

          // 创建文件保存路径
          String path = "/tmp/" + file.getOriginalFilename();
          File serverFile = new File(path);
          BufferedOutputStream stream = new BufferedOutputStream(
                  new FileOutputStream(serverFile));
          stream.write(bytes);
          stream.close();

          System.out.println("You have successfully uploaded " + file.getOriginalFilename());
      } catch (Exception e) {
          System.out.println("You failed to upload " + file.getOriginalFilename() + " => " + e.getMessage());
      }
    } else {
        System.out.println("You failed to upload " + file.getOriginalFilename() + " because the file was empty.");
    }
    return "uploadFileSuccessView";
  }
}

4. 编写前端页面

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

二、不依赖框架的文件上传实例

1. 前端页面

<form enctype="multipart/form-data" method="post" action="UploadServlet">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <br>
  <input type="submit" value="Upload">
</form>

2. 服务器端Java代码

@WebServlet("/UploadServlet")
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB
                 maxFileSize = 1024 * 1024 * 10, // 10MB
                 maxRequestSize = 1024 * 1024 * 50) // 50MB
public class UploadServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    InputStream inputStream = null;
    OutputStream outputStream = null;
    PrintWriter out = response.getWriter();

    try {
      Part filePart = request.getPart("file");
      inputStream = filePart.getInputStream();

      File file = new File("C:/uploads/" + filePart.getSubmittedFileName());
      outputStream = new FileOutputStream(file);

      int read = 0;
      final byte[] bytes = new byte[1024];

      while ((read = inputStream.read(bytes)) != -1) {
        outputStream.write(bytes, 0, read);
      }
      System.out.println("New file " + file.getName() + " created at " + file.getAbsolutePath());
      out.println("Received file=" + file.getName());
    } catch (Exception e) {
      out.println("Error=" + e.getMessage());
    } finally {
      if (inputStream != null) inputStream.close();
      if (outputStream != null) outputStream.close();
      if (out != null) out.close();
    }
  }
}

这是两种Java文件上传的实例,总体来说,使用Spring MVC框架上传文件更为简便,而不依赖框架的上传方式更为灵活,可以在任何Java Web项目中使用。我们可以根据实际需求,选择合适的文件上传方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:两种java文件上传实例讲解 - Python技术站

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

相关文章

  • java模拟多线程http请求代码分享

    下面是详细的“java模拟多线程http请求代码分享”的攻略: 1. 如何使用Java模拟http请求 Java模拟http请求的主要方式是通过Java的第三方库Apache HttpClient进行实现。下面是几个常用的示例:1. 发送POST请求: CloseableHttpClient httpClient = HttpClients.createDe…

    Java 2023年5月18日
    00
  • java web开发之servlet图形验证码功能的实现

    [TOC] 介绍 图形验证码(Captcha)是一种用于区分用户是机器人还是人类的测试。它通常用于网站注册、评论等功能。Java Web开发中,我们可以使用Servlet来实现图形验证码的功能,下面就来介绍一下如何实现。 实现步骤 以下是Servlet实现图形验证码的完整步骤: 创建验证码图片 将验证码图片输出到页面 将验证码传入Session中 验证用户输…

    Java 2023年6月15日
    00
  • Sprint Boot @CachePut使用方法详解

    在Spring Boot中,@CachePut注解用于将方法的返回值存储到缓存中。使用@CachePut注解可以在方法执行后将结果缓存起来,以便下次使用相同的参数调用该方法时,可以直接从缓存中获取结果,而不必再次执行该方法。本文将详细介绍@CachePut注解的作用和使用方法,并提供两个示例说明。 @CachePut注解的作用 在Spring Boot中,@…

    Java 2023年5月5日
    00
  • SpringBoot详解整合Spring Boot Admin实现监控功能

    SpringBoot详解整合Spring Boot Admin实现监控功能 简介 Spring Boot Admin是用于管理和监控一个或多个Spring Boot应用程序的应用程序。相比于spring-boot-actuator,默认Web UI很友好。此外,它还提供了以下功能: 显示应用程序的元数据(例如:Git提交信息,构建时间等) 显示健康检查状态以…

    Java 2023年5月19日
    00
  • SpringBoot使用Sharding-JDBC实现数据分片和读写分离的方法

    SpringBoot使用Sharding-JDBC实现数据分片和读写分离的方法 概述 Sharding-JDBC是基于JDBC的分布式数据库中间件,用于替代传统数据库的分布式架构。Sharding-JDBC采用读写分离和数据分片等技术,使得应用程序无需了解底层数据库的实现细节,可以直接访问逻辑表的数据,同时对于外部应用程序的影响也同样降到了最低,非常适合大型…

    Java 2023年5月20日
    00
  • 八年Android开发经验,从码农到架构师的技术成长之路

    八年Android开发经验,从码农到架构师的技术成长之路 在这篇分享中,我将分享我的八年Android开发经验,涵盖从码农到架构师的整个过程,以及我在这个过程中的主要学习成果和经验教训。 第一阶段:码农 我作为一名Android初学者,开始学习Java和Android SDK开发。在开始时,我主要关注如何将基本的功能添加到应用程序中,例如如何设计UI、如何使…

    Java 2023年5月23日
    00
  • Java 数据库连接池c3p0 介绍

    关于Java数据库连接池c3p0介绍的详细攻略,请仔细阅读以下内容。 什么是连接池? 在Java开发过程中,数据库连接占用了许多资源,如果在每次请求时都新连接数据库会使系统负载非常高,而且打开和关闭数据库连接也需要一定的时间。所以,使用连接池可以有效减少系统开销和提高系统的响应速度。 连接池是管理数据库连接,使得多个用户之间可以共享一个或多个数据库连接。连接…

    Java 2023年5月20日
    00
  • SpringBoot项目鉴权的4种方式小结

    下面我们来详细讲解SpringBoot项目鉴权的4种方式,包括:JWT鉴权、Session鉴权、OAuth2鉴权以及SaaS鉴权。 1. JWT鉴权 JWT鉴权是目前最常用的鉴权方式之一,其具有轻量级、无状态、较高的安全性等特点。这里简单介绍一下JWT鉴权的原理: 在用户登录成功之后,服务器会将用户信息通过一定的加密方式生成一份Token,并将其返回给客户端…

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