SpringMVC文件上传和下载

SpringMVC 实现文件上传和下载 SpringMVC 实现文件上传和下载相关理论知识这里不进行介绍。这里主要介绍具体怎么来编程实现这样一个功能。具体步骤具体步骤如下1、使用Idea创建一个Springmvc项目,具体过程略。2、在pom.xml中添加相关的依赖pom.xml具体完整内容如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// 阅读详情

一:文件上传

文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。

第一步:

创建需要的manve项目

配置springmvc.xml中 的文件上传


 <!--文件上传配置-->
    <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
        <property name="defaultEncoding" value="utf-8"/>
        <!-- 上传文件大小上限,单位为字节(10485760=10M) -->
        <property name="maxUploadSize" value="1048576000"/>
        <property name="maxInMemorySize" value="4096000"/>
    </bean>

第二部:

书写首页面,用它进行文件的上传

upload.jsp

<%--
  Created by IntelliJ IDEA.
  User: ZS
  Date: 2021/11/17
  Time: 15:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/upload/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="uploadgo"/>
    <input type="submit" value="upload">
</form>
</body>
</html>

第三部:

控制层Controller

@Controller
@RequestMapping("/upload")
public class uploadController {
    @RequestMapping("upload")
    /**
     * 文件上传
     * @param uploadgo
     * @param request
     * @return
     */
    @ResponseBody
    public String upload(MultipartFile uploadgo, HttpServletRequest request){
        String originalFilename = uploadgo.getOriginalFilename();//获取原始文件名
        System.out.println(originalFilename);
        //存储的内部路径
        String upload = request.getServletContext().getRealPath("upload");//存储文件名路径

        System.out.println(upload);
        //与目的地建立连接
        File file = new File(upload);
        if (!file.exists()) {//判断是否存在,不存在创建
            file.mkdirs();
        }
        //获取文件名后缀名
        String suffix = originalFilename.substring(originalFilename.indexOf("."));
        //构建文件具体上传路径
        String filename = upload.concat(File.separator).concat(UUID.randomUUID().toString()).concat(suffix);
        System.out.println(filename);
        try {
            uploadgo.transferTo(new File(上传按钮));
            return filename;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

这是Springmvc的文件上传,文件上传上传的属于idea的内部路径,运行就可以把文件上传到idea内部储存

二:文件下载

文件的下载与文件的上传其实并没与多大变化,唯一变化的就是Controller层

 文件下载的Controller使用储存的路径是内部,而文件的下载路径是自己创建的文件,给的是具体路径

控制层Controller

package cn.hp.ssm.controller;

import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.UUID;

@Controller
@RequestMapping("/upload")
public class uploadController {
    @RequestMapping("upload")
    /**
     * 文件上传
     * @param uploadgo
     * @param request
     * @return
     */
    @ResponseBody
    public String upload(MultipartFile uploadgo, HttpServletRequest request){
        String originalFilename = uploadgo.getOriginalFilename();//获取原始文件名
        System.out.println(originalFilename);
        //文件下载的具体路径
        String upload="D:\\upload";
        //内部路径
//        String upload = request.getServletContext().getRealPath("upload");//存储文件名路径

        System.out.println(upload);
        //与目的地建立连接
        File file = new File(upload);
        if (!file.exists()) {//判断是否存在,不存在创建
            file.mkdirs();
        }
        //获取文件名后缀名
        String suffix = originalFilename.substring(originalFilename.indexOf("."));
        //构建文件具体上传路径
        String filename = upload.concat(File.separator).concat(UUID.randomUUID().toString()).concat(suffix);
        System.out.println(filename);
        try {
            uploadgo.transferTo(new File(filename));
            return filename;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
/**
 * 文件下载
 *ResponseEntity进行返回
 */
    public ResponseEntity<byte[]> download(HttpServletRequest request,String filename){
        //文件地址在项目内部的目的地地址信息
//        String upload = request.getServletContext().getRealPath("upload");
        //目的仓库在项目之外
        String upload="D:\\upload";
        //先拼接具体位置的位置路径,然后通过file进行建立连接
        File file = new File(upload+File.separator+filename);
        if (!file.exists()){//不存在文件,直接返回null
            return null;
        }
        //创建标头文件对象
        HttpHeaders headers = new HttpHeaders();
        //解决乱码问题
        try {
            String downloadfile = new String(filename.getBytes(StandardCharsets.UTF_8),"iso-8859-1");
            //以下载的方式打开文件
            headers.setContentDispositionFormData("attachment",filename);
            //二进制流
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
}


}

这就是我所理解的上传和下载,希望对你们有所帮助。

【SpringMVC笔记11】SpringMVC实现文件上传和下载 文件上传是实际开发过程中,经常会遇见的需求,例如:上传excel文件,上传word文档,上传pdf文件等等,SpringMVC框架也是支持文件上传功能的,SpringMVC框架是通过第三方依赖实现的文件上传功能,第三方依赖是由Apache提供的Commons FileUploads。...... 阅读详情

相关推荐

SpringMVC(九)文件上传和下载

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文使用ResponseEntity实现下载文件的功能我们进行下载该文件:文件资源在本章资源可以找到。ctrl+p进行查看:此时运行之后出现如下所示:此时的视图没有找到,控制器方法如果没有设置返回值的话,会把我们当前要处理的请求地址作为逻辑视图,然后进行返回。

超级程序诞生的博客 1079

Spring 大文件传输老中断?手把手教你解决问题!

开发文件上传下载功能时,传输大文件就像开盲盒——要么传着传着突然中断,要么直接弹出文件大小超限的报错。其实这些问题都有迹可循,下面就结合具体场景拆解解决方案。

llwszx的博客 1818

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具编写sgdc约束文件解决跨时钟域(CDC)报错问题。从基础语法到实战案例,涵盖时钟声明、复位约束、路径豁免等关键技巧,特别针对SPI断续时钟等特殊场景提供解决方案,并附常见错误排查指南,帮助工程师高效完成CDC验证。

weixin_28744423的博客 625

SpringMVC03-文件上传、异常处理、拦截器

SpringMVC的文件上传、简单批量文佳上传、异常处理、拦截器、模拟登录拦截

weixin_53903929的博客 859

无人机蜂群作战设计技术详解

构建防御网络,拦截敌方无人机或导弹;无人机蜂群作战设计技术是一种创新的军事应用概念,它基于生物仿生学原理,通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,以执行复杂多样的军事任务。无人机蜂群作战的概念源于自然界中蜜蜂、蚂蚁等生物群体的行为模式,这些生物群体通过简单的个体间的信息交互和分工协作,能够完成远远超出单一个体能力的复杂任务。其中,无人机群体是执行任务的主体,指挥控制系统负责任务分配和决策,通信数据链则保障无人机群体与指挥控制系统之间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2214

把业务变化变成实时流动:SAP Event Mesh 的概念、能力与落地方法

SAP Event Mesh 是 SAP BTP 上的云消息与事件服务,通过异步事件通信实现系统解耦。核心功能包括:1)提供Topic(广播)和Queue(持久化)两种消息模式;2)支持AMQP、MQTT、REST等多种协议接入;3)作为SAP生态的事件枢纽,可与SAP Integration Suite、CAP框架等无缝集成。典型应用场景:S/4HANA业务事件驱动流程、微服务扩展、IoT设备数据上云等。相比同步调用,它能显著提升系统弹性,避免雪崩故障,特别适合需要实时性与松耦合的企业级集成。高级版本(A

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 249

springmvc文件上传下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下Spring中的文件上传和下载功能的实现,文件上传必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器。 一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理...

人生就像一场戏 531

写给开发人员的实用密码学 - Hash算法

说到Hash(哈希),开发人员应该不陌生,比如Hash表是一种非常常用的数据结构,通过Hash表能够根据键值快速找到数据。哈希函数将文本(或其他数据)映射为整数,从而能够提高检索效率。密...

云水木石 1503

SpringBoot文件上传及路径配置

Springboot 文件上传 我这次用的是springboot,先说一下用法吧。 先要前端写一个form表单,然后写一个文件上传的input 最重要的就是 enctype=“multipart/form-data” method="post" 一定要写这个不然后端接收不到会报错 <form action="onlode" enctype="multipart/form-data" method="post"> <input type="file" name="file" pla

weixin_43763403的博客 1万+

YOLO26涨点改进 | 细节涨点篇 | 源自SCI一区 | YOLO26引入HWD小波下采样模块,而不会显著增加计算开销,(适合小目标分割任务、小目标检测任务)

本文提出了一种基于Haar小波变换的下采样模块HWD,用于改进YOLO26目标检测性能。HWD模块通过小波变换降低特征图分辨率,同时将空间信息编码到通道维度,有效保留了关键信息。相比传统下采样方法,HWD能显著减少信息不确定性,提升小目标检测精度。实验表明,该模块可无缝集成到CNN架构中,不增加计算开销。文章详细介绍了HWD的实现原理、代码结构以及在YOLO26中的集成方法,并提供了两种改进版yaml配置文件。该创新模块已在多种数据集上验证有效,特别适合语义分割和目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 401

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

丨汀、的博客 4万+

SpringMVC | SpringMVC中的 “文件上传和下载”

目录: 一、文件上传 1.1 文件上传“概述” 1.2 文件上传“具体配置” : “前端”中配置“文件上传” ( type=“file” + 满足3个条件 ) “后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean + 配置“文件上传”的“约束条件” + 通过“MultipartFile接口”参数接收“传来的文件”) 1.3 文件上传“应用案例” : 文件上传 (存储在“相对路径”) 文件上传 (存储在“绝对路径”) 二、文件下载 .....

m0_70720417的博客 3270

【AI智能体】Dify 搭建发票识别助手操作实战详解

Dify 搭建发票识别专属助手操作实战详解

congge 5549

SpringMVC实现文件上传和下载

在实际的项目开发中,文件的上传和下载可以说是最常用的功能之一,例如图片的上传与下载、邮件附件的上传和下载等。本篇我们将对 Spring MVC 中的文件上传和文件下载功能进行分享。

weixin_65644655的博客 2072

PCL 八叉树的使用

八叉树(Octree)是一种空间划分的数据结构,广泛应用于三维点云的处理和分析。八叉树通过将空间递归地划分为八个子区域,可以有效地组织和索引三维点数据,提升点云的查询、降采样和配准等操作的效率。

纵马踏花向自由 1658

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

接下来一起探索一下SpringMVC上传以及下载文件的功能实现!!!到了文章的尾声,咱们这一期的分享结束,下期见!!!

狮子也疯狂的博客 2160

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

六、SpringMVC实现文件上传下载

SpringMVC-servlet.xml 使用springMVC来处理文件上传和下载需要添加如下的配置文件,而且id是固定的 可以到org.springframework.web.servlet.DispatcherServlet的源码文件下查看 CommonsMultipartResolver提供三个属性设置,可以跳转到源码开头的注释查看 SpringMVC-servlet.xml中添...

玻璃汽水的博客 7053

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringMVC的文件上传和下载

    SpringMVC会根据请求方法签名的不同,将请求消息中的信息以一定的方式转换并绑定到请求方法的参数中。在请求消息到达真正调用处理方法的这段时间内,SpringMVC还会完成很多其他的工作,包括请求消息转换、数据转换、数据格式化以及数据校验。一:SpringMVC实现文件上传    为了实现文件上上传,必须将表单的method设置为POST,并将enctype设置为multipart/fo...

jz_say的博客 280

SpringMVC中的文件上传和下载

一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析原始的HTTP响应。文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。

fj123321666的博客 1084

SpringMVC 文件上传下载

1.文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。 2.文件上传示例: (1) 拷贝jar包 commons-fileupload-1.2.1.jar commons-io-2.0.jar (2) 配置文件上传解析器 <!-- 配置文件上传解析器 id 必须是"multipartResolver",否则,会报错误: --> <bean id="multipartResolver" class="org.spr

程序员学习圈 437

SpringMVC文件上传及下载

SpringMVC文件上传及下载 文件上传及下载是 Web 项目中经常使用的功能,SpringMVC 可以很好地支持文件上传及下载;本节新建 SpringMVC-09-File 项目学习在 SpringMVC 中进行文件上传及下载。 1. 文件上传 1.1 前置知识 文件上传即从客户端向服务器传输数据,所以在客户端也需要有文件传输的支持! 前端页面的表单中的 enctype 属性就是用于设置传输格式的 application/x-www=form-urlencoded:默认方式,只处理表单域中的 valu

qq_43560701的博客 418

SpringMVC--文件上传和下载

1. SpringMVC–文件上传和下载 文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。 前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择

天行健 君子以自强不息,地势坤 君子以厚德载物。 976
上一篇: Springmvc用到的注解
下一篇: Springmvc的全部知识详解(前后台传值,文件上传和下载,拦截器)
变成秃头怪
博客等级 码龄5年 47粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值