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日

相关文章

  • Spring中@Service注解的作用与@Controller和@RestController之间区别

    下面详细讲解“Spring中@Service注解的作用与@Controller和@RestController之间区别”。 @Service注解的作用 在Spring框架中,@Service注解是用于标记一个服务类的。与@Component注解类似,@Service注解的作用是告诉Spring框架,这个类是一个服务组件,需要被Spring框架管理。 与@Co…

    Java 2023年6月16日
    00
  • 一文掌握IDEA中的Maven集成与创建

    下面我将详细讲解“一文掌握IDEA中的Maven集成与创建”的完整攻略。 IDEA中Maven集成 第一步:安装Maven 打开IDEA,选择Preferences,然后在搜索框中输入Maven,找到Maven设置选项,查看当前是否已经安装了Maven,如果没有,请点击“+”来安装Maven。 第二步:创建Maven项目 在IDEA中选择“新建项目” -&g…

    Java 2023年5月20日
    00
  • boot-admin开源项目中有关后端参数校验的最佳实践

    我们在项目开发中,经常会对一些参数进行校验,比如非空校验、长度校验,以及定制的业务校验规则等,如果使用if/else语句来对请求的每一个参数一一校验,就会出现大量与业务逻辑无关的代码,繁重不堪且繁琐的校验,会大大降低我们的工作效率,而且准确性也无法保证。为保证数据的正确性、完整性,前后端都需要进行数据检验。本文对开源 boot-admin 项目的后端校验实践…

    Java 2023年5月7日
    00
  • 一文详解Spring AOP的配置与使用

    一文详解Spring AOP的配置与使用攻略 1. Spring AOP简介 Spring AOP是Spring框架中的一个模块,它提供了基于代理的AOP实现。 AOP(Aspect Oriented Programming)即面向切面编程,是一种编程范式。它通过在程序运行期间动态地将代码切入到类的指定方法或指定位置上,实现一些特定功能。 Spring AO…

    Java 2023年5月19日
    00
  • Request与Session的存值取值操作

    Request与Session是常见的两种在Web应用程序中存储数据的方式。下面,我会一步步详细讲解Request与Session的存值取值操作。 Request Request代表了来自客户端(浏览器)的HTTP请求。如果想要在Request中存储数据,可以使用以下方式: 1. Query String Query String是在URL中包含的参数。可以…

    Java 2023年6月15日
    00
  • Spring MVC请求参数接收的全面总结教程

    接下来我将详细讲解Spring MVC请求参数接收的全面总结教程。 为什么需要请求参数接收 在Web开发中,经常需要接收前端传来的数据,这些数据以请求参数的形式传递。请求参数通常包含了用户请求的具体行为,并提供了必要的参数数据。例如,访问百度搜索,连接中会携带请求参数q,表示搜索关键词。 Spring MVC框架提供了有用且全面的请求参数接收处理机制,让我们…

    Java 2023年5月16日
    00
  • Java springboot 配置文件与多环境配置与运行优先级

    Java Spring Boot 是一个轻量级、快速开发微服务架构的框架,它提供了一种快速简便的方式来配置应用程序。不同的环境需要不同的配置,因此Spring Boot提供了多环境配置功能,同时我们也可以在配置文件中定制应用程序的运行优先级。 1. 配置文件 Spring Boot 提供了多种配置文件的支持,其中最常用的是 application.prope…

    Java 2023年5月19日
    00
  • Java调用Windows的DOS命令的方法

    Java调用Windows的DOS命令的方法 在Java中调用Windows的DOS命令可以使用Java的Runtime类。Runtime类提供了一个exec()方法,通过该方法可以调用DOS命令并且获取它的返回结果。 下面是一个简单的调用DOS命令的示例: String command = "dir"; // 要执行的DOS命令 Pro…

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