两种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实现两个线程交替打印的实例代码

    下面是详细讲解“java实现两个线程交替打印的实例代码”的完整攻略和示例说明。 首先,实现两个线程交替打印的基本思路是使用wait()和notify()方法进行线程间的通信,其中wait()方法使线程等待,notify()方法唤醒正在等待的线程。具体实现步骤如下: 定义一个对象锁,用于线程间的同步操作。 定义两个标志位:flagA和flagB,分别代表两个线…

    Java 2023年5月18日
    00
  • java list用法示例详解

    Java List用法示例详解 概述 Java中List是一个用于存储一组有序元素的接口,它是java.util包中的一个接口。List接口的实现类有ArrayList、LinkedList等,它们都是用于存储为一组有序元素的集合。本文将对Java中List的用法进行详细的介绍。 创建List 创建List的方法如下,其中“E”代表元素的类型。 List&l…

    Java 2023年5月26日
    00
  • SpringBoot如何获取Kafka的Topic列表

    获取Kafka的Topic列表是使用SpringBoot操作Kafka时常用的功能。下面是一些步骤和示例,帮助你深入了解如何获取Kafka的Topic列表。 导入依赖 在使用SpringBoot操作Kafka之前,需要在项目的pom.xml中加入相应的依赖。Kafka自身提供了一些Java客户端。SpringBoot的Kafka集成则在这些客户端的基础上提供…

    Java 2023年5月20日
    00
  • 基于Java写minio客户端实现上传下载文件

    下面是基于Java写minio客户端实现上传下载文件的完整攻略。 1. 安装Minio服务器 首先,需要在本地或服务器上安装Minio服务器,具体步骤可以参考官方文档进行操作。一般来说,可以通过以下命令安装: $ wget https://dl.min.io/server/minio/release/linux-amd64/minio $ chmod +x …

    Java 2023年5月19日
    00
  • eclipse 中的javac命令与java命令

    针对“eclipse 中的javac命令与java命令”的详细解释和完整攻略,下面是我的回答: 1. 什么是javac命令 javac命令是Java编译器,用于将Java代码编译成Java字节码。在eclipse中,可以通过在项目中编写Java代码后,点击“编译”按钮(位于工具栏中),或通过点击菜单栏中的“项目” > “编译”来使用javac命令。 2…

    Java 2023年5月19日
    00
  • 对象的创建过程包括哪些步骤?

    以下是关于“对象的创建过程包括哪些步骤?”的完整使用攻略: 1. 对象的创建过程 在Java中,对象的创建过程包括以下几个步骤: 类加载:在Java程序运行,JVM会将类的字节码加载到内存中,并对类进行解析和验证。 分配内存:在类加载完成后,VM会在堆内存中为对象配一块连续的内存空间。在分配内存时,JVM会根据对象的大小和内存分配策略来确定内存分配方式。 初…

    Java 2023年5月12日
    00
  • java实现图片上传至本地实例详解

    Java实现图片上传至本地实例详解 在Web开发中,经常会遇到用户需要上传图片的需求。本文将详细讲解Java如何实现图片上传至本地的操作。 基本原理 实现图片上传的基本原理是将客户端上传的二进制数据流保存到服务器端的某个文件夹中,然后将图片的URL返回给客户端,客户端通过URL获取到图片并显示。 实现步骤 创建一个上传文件的表单,设置enctype属性为“m…

    Java 2023年5月19日
    00
  • Java struts2捕获404错误的方法汇总

    Java struts2捕获404错误的方法汇总 在使用Java struts2开发Web应用时,404错误是比较常见的错误之一。当客户端请求的URL在服务器中不存在时,就会返回404错误。而如何正确地捕获404错误,处理并给用户一个友好的提示信息,则需要开发者进行处理。 下面将介绍两种捕获404错误的方法: 方法一:利用struts2的异常处理机制 在st…

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