SpringMVC深入讲解文件的上传下载实现

下面是SpringMVC深入讲解文件的上传下载实现的完整攻略。

上传文件

HTML表单设置

在html表单中设置enctype="multipart/form-data"即可上传文件。注意要将表单method设置为post。

<form method="post" action="/upload" enctype="multipart/form-data">
  <input type="file" name="file"/>
  <input type="submit"/>
</form>

SpringMVC配置

在SpringMVC配置文件中添加以下配置:

<bean id="multipartResolver"  
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
    <property name="defaultEncoding" value="UTF-8"/>  
    <!--限制单个文件大小10MB-->  
    <property name="maxUploadSize" value="10485760"/>  
    <!--限制总上传文件大小20MB-->  
    <property name="maxUploadSizePerFile" value="20971520"/>  
</bean>

CommonsMultipartResolver类支持文件上传,并且可以限制文件大小。

Controller实现

在Controller中添加以下代码:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) {
    try {
        //获取上传文件名
        String fileName = file.getOriginalFilename();
        //保存文件到本地
        File saveFile = new File("C:/uploads/" + fileName);
        file.transferTo(saveFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "success";
}

下载文件

Controller实现

在Controller中添加以下代码:

@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(HttpServletResponse response) {
    String filePath = "C:/uploads/test.txt";
    File file = new File(filePath);
    String fileName = file.getName();
    try {
        //设置响应头
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO-8859-1"));
        //输出文件流
        FileInputStream fis = new FileInputStream(filePath);
        BufferedInputStream bis = new BufferedInputStream(fis);
        OutputStream os = response.getOutputStream();
        byte[] bytes = new byte[1024];
        int len = 0;
        while((len = bis.read(bytes)) != -1) {
            os.write(bytes, 0, len);
        }
        os.close();
        bis.close();
        fis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

HTML链接

在HTML中添加以下代码:

<a href="/download">Download</a>

当用户点击链接时,文件将自动下载。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC深入讲解文件的上传下载实现 - Python技术站

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

相关文章

  • java 如何读取properties文件

    Java读取properties文件步骤: 1.创建Properties对象 Properties prop = new Properties(); 2.使用load方法加载properties文件对应的输入流 InputStream in = new FileInputStream("config.properties"); prop.…

    Java 2023年5月20日
    00
  • 基于java时区转换夏令时的问题及解决方法

    当涉及到时区转换和夏令时的问题时,对于Java开发者来说可能很容易遇到困惑和挑战。本篇攻略将详细讲解java时区夏令时的相关问题,并提供一些解决方案,帮助开发者更好地应对这些问题。 什么是时区和夏令时? 在深入讨论Java中时区和夏令时的问题之前,需要先理解这两个概念的基本含义。 时区:时区是由一系列位置使用相同的标准时间而形成的区域。通常使用UTC(协调世…

    Java 2023年5月20日
    00
  • Java的Struts框架报错“TokenNotFoundException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“TokenNotFoundException”和“TokenExpiredException”错误。这些错误通常由以下原因之一起: 防止重复提交:Struts框架提供了一种防止重复提交的机制,即使用令牌(Token)来确保每个表单只能提交一次。如果令牌未找到或已过期,则可能会出现这些错误。 配置错误:如果配置文…

    Java 2023年5月5日
    00
  • SpringBoot Security从入门到实战示例教程

    SpringBoot Security从入门到实战示例教程 SpringBoot Security 是一个基于Spring Boot的安全框架,提供了许多安全功能,比如身份验证、授权、攻击防护等。本教程将带你从入门到实战,讲解SpringBoot Security的使用方法。 准备工作 在开始学习SpringBoot Security之前,需要先了解Spri…

    Java 2023年6月3日
    00
  • Hibernate分页的两种实现方法

    Hibernate是目前最为流行的ORM框架之一,提供了非常便捷的持久化操作,而在实际应用中,我们经常需要对数据进行分页,以免一次性将所有数据全部加载到内存中,影响系统性能。那么Hibernate分页的实现方法有哪些呢?接下来我将详细阐述两种实现方法,其中一种是使用Criteria API的方式,另一种是使用SQL语句的方式。 使用Criteria API实…

    Java 2023年5月20日
    00
  • Java实现读取resources目录下的文件路径的九种方式

    Java实现读取resources目录下的文件路径通常有以下九种方式: 1. 使用ClassLoader的getResource()方法 在Java中,可以使用ClassLoader的getResource()方法获取resources目录下的文件路径。示例代码如下: URL resource = getClass().getClassLoader().ge…

    Java 2023年6月15日
    00
  • 基于Springboot吞吐量优化解决方案

    基于Spring Boot的吞吐量优化解决方案可以通过以下步骤实现: 使用异步处理 在Spring Boot中,可以使用异步处理来提高吞吐量。异步处理可以将请求处理分配给不同的线程,从而提高应用程序的并发性能。以下是一个使用异步处理的示例: @RestController public class MyController { @Autowired priv…

    Java 2023年5月15日
    00
  • SpringMVC实现简单跳转方法(专题)

    SpringMVC实现简单跳转方法攻略 SpringMVC是一种基于Java的Web框架,它提供了许多便捷的功能和工具,使得开发者可以更加高效地开发Web应用程序。其中,实现简单跳转方法是SpringMVC中常用的一种技术,本文将详细讲解如何在SpringMVC中实现简单跳转方法,并提供两个示例来说明如何实现这一过程。 步骤一:创建SpringMVC项目 在…

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