两种java文件上传实例讲解

yizhihongxing

下面是详细讲解“两种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多线程CountDownLatch的实现

    下面是我对于“Java多线程CountDownLatch的实现”的完整攻略。 CountDownLatch简介 CountDownLatch是JavaSE5中并发包(java.util.concurrent)中的一个类,它可以允许一个线程等待一组线程完成操作后再继续执行。 具体来说,CountDownLatch 常用于某个线程需要等待其它线程执行完毕某些操作…

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

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

    Java 2023年5月23日
    00
  • java学习笔记之eclipse+tomcat 配置

    下面是Java学习笔记之Eclipse+Tomcat配置的完整攻略。 步骤一:下载和安装Eclipse和Tomcat Eclipse是一个集成开发环境(IDE),可以用于编写和调试Java代码,Tomcat是一个开源的Java Servlet容器,可以用于运行Java Web应用程序。 可以从官方网站上下载最新版本的Eclipse和Tomcat。 Eclip…

    Java 2023年6月2日
    00
  • Java分层概念详解

    Java分层概念详解 什么是分层概念? 分层概念是软件架构中一种重要的设计思想,它将整个系统按照功能划分为多个不同的层次,每一层都有不同的工作职责和业务逻辑。每一层都可以独立进行开发和测试,而不会影响其他层的功能。同时,各个层之间通过接口交互数据,从而使得整个系统更加稳定、可靠、易于维护和升级。 一个标准的分层体系应该包含以下几个层次: 表现层(Presen…

    Java 2023年5月20日
    00
  • 什么是递归?用Java写一个简单的递归程序

    什么是递归? 递归是一种解决问题的方法。它将问题分解为子问题,并通过递归调用函数来解决这些子问题。递归函数是一个函数,它调用它本身,直到达到某个终止条件。 Java中的递归 在Java中,递归是通过调用函数本身来实现的。下面是一个递归函数的一般形式: public returnType functionName(parameters) { if (baseC…

    Java 2023年5月24日
    00
  • 让javascript加载速度倍增的方法(解决JS加载速度慢的问题)

    下面是一份详细讲解“让 JavaScript 加载速度倍增的方法”的攻略,希望能够帮助到你。 为什么要关注 JavaScript 的加载速度 JavaScript 是网页的重要组成部分之一,但是在加载过程中可能会带来用户体验的负面影响。如果加载速度过慢,会导致页面变得卡顿,用户体验不佳,同时也会对网站的排名和转化率造成不良影响。因此,关注 JavaScrip…

    Java 2023年6月15日
    00
  • Java日期时间以及日期相互转换

    下面是关于Java日期时间以及日期相互转换的完整攻略: Java日期时间 Java提供了许多有关日期和时间的类,其中一些是java.util.Date,java.util.Calendar和java.time.LocalDate和java.time.LocalDateTime。 在本文中,我们将学习如何使用这些类来处理日期和时间。 Java.util.Dat…

    Java 2023年5月20日
    00
  • JavaWeb中使用JavaMail实现发送邮件功能实例详解

    下面我将为你详细讲解“JavaWeb中使用JavaMail实现发送邮件功能实例详解”的完整攻略。 1. 前置技能 在使用JavaMail之前你需要具备以下知识: Java基础知识:Java语法、类、对象、方法、接口、异常、集合框架等 SMTP/POP3协议:SMTP是发送邮件的协议,POP3是接收邮件的协议,具体可以通过网络搜索或者参考相关文档进行了解 2.…

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