Spring boot的文件上传

spring boot文件上传技术 springboot没有自己的文件上传技术,是依赖于springMVC的文件上传技术。本文,我们将介绍下springMVC中文件上传技术,并通过示例展示下该技术在springboot项目中的应用。 上传文件,必须将表单method设置为post,并将enctype设置为multipart/form-data。只有这样,浏览器才会把用户所选文件的二进制数据发送给服务器。这个知识点以前在servl... 阅读详情

微信公众号:Java患者

专注Java领域技术分享

前言

       文件上传的功能,基本上在所有的企业级应用都会有,那么在一个前后端分离的架构中,文件上传的功能又是如何去实现的呢。一般前端采用的是单页面应用,不会发生刷新和表单的提交,大部分都是异步完成的,他提交文件的时候,只是提交一个文件的路径上来。

文件上传测试用例

  @Test
  public void whenUploadSuccess() throws Exception {
      String result = mockMvc.perform(fileUpload("/file")
              .file(new MockMultipartFile("file", "test.txt", "multipart/form-data", "hello upload".getBytes("UTF-8"))))
              .andExpect(status().isOk())
              .andReturn().getResponse().getContentAsString();
      System.out.println(result);
  }

        MockMultipartFile对象用来构建我们的文件以及文件上传的参数,第一个参数指定上传时参数的name,第二个参数指定上传的文件名字,第三个参数指定enctype类型,第四个参数就是上传的文件。

下面是我们文件上传的Controller:

@RestController
@RequestMapping("/file")
public class FileController {


  // 放文件的路径
  private String folder = "E:\\WorkSpace\\security\\security-demo\\src\\main\\java\\com\\zhaohong\\web\\controller";


  @PostMapping
  public FileInfo upload(MultipartFile file) throws Exception {
    System.out.println(file.getName());
    System.out.println(file.getOriginalFilename());
    System.out.println(file.getSize());
    File localFile = new File(folder, new Date().getTime() + ".txt");
    // 把上传的文件写在本地
    file.transferTo(localFile);
        return new FileInfo(localFile.getAbsolutePath());
  }
 }

        需要注意的是,以上是我们代码的方便,而在我们实际的开发中,通常把文件存在到云服务上面,如阿里云、青牛云。

文件下载测试用例

 下面是根据文件id,下载文件的代码:

  @GetMapping("/{id}")
  public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response) throws Exception {


    try (InputStream inputStream = new FileInputStream(new File(folder, id + ".txt"));
        OutputStream outputStream = response.getOutputStream();) {


      response.setContentType("application/x-download");
      response.addHeader("Content-Disposition", "attachment;filename=test.txt");
      // commons-io包下的
      // 包输入流写入输出流
      IOUtils.copy(inputStream, outputStream);
      outputStream.flush();
    } 
  }

        上面代码中把流的声明写在try的括号里面,他会在代码运行结束,自动帮我们关闭流,这是jdk1.7的特性。

        到目前前为止。我们的文件上传下载已经讲完了,各位小伙伴们别忘了点关注哦。

查看

Spring Boot文件上传 在图5-14所示的文件上传页面中,共添加了3个上传的文件,每个上传文件后方对应一个【删除】按钮,用于移除上传的文件。单击文件上传页面的【上传】按钮,如果存在未选择的文件,会提示“请选择一个文件”,否则选择好的上传文件会进行上传处理,效果如图5-15所示。从图5-16可以看出,在定制的上传文件存储目录“F:/ile/”下,出现了选择上传的3个不同类型的文件,同时文件名也根据设置进行了相应的修改,读者还可以打开每个文件查看具体的文件内容。从图5-15可以看出,文件上传成功后页面会提示“上传成功”。 阅读详情

相关推荐

Spring Boot 实现文件上传下载功能

进入前端页面的 URL 为 http://localhost:8080/upload.html。该部分代码为 [2.2 文件上传功能实现](###2.2 文件上传功能实现) 的前端实现。文件下载则只是简单的 GET 请求。现有的 Web 框架都内置了处理文件上传的功能。指定了文件在请求体中的键,后端服务器将通过这个名称来获取文件数据。是用来表示上传的文件,服务器会自动解析该文件并进行处理。,并选择一个文件进行上传。将文件上传的具体逻辑抽象到一个。将文件上传的具体逻辑抽象到一个。请求,下载指定的文件。

weixin_44814196的博客 3009

springboot实现多参数的同时上传多个文件

1.注意MultipartFile[] files对象的接收,要使用注解@RequestPart(“files”) ,而不是 @RequestParam。

wwwvipp的博客 2146

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作

wps js宏入门看这里,我写了常用的js操作Excel的方法:获取工作簿对象、获取工作表对象、获取单元格的值、链接转图片、生成条形码图片、单元格区域数据转二维数组方法、保存工作簿、弹出输入框、YesNo选择框,助你从VBA转战JS。

huaermeier的博客 3万+

SpringBoot文件上传同时,接收复杂参数

SpringBoot上传文件,如果需要复杂参数(自定义对象接收前端参数),那么需要自定义消息转换器(如AbstractJackson2HttpMessageConverter),来支持contentType值是'application/octet-stream'类型的参数,并将其转换成目标格式; 如果不需要复杂参数,只是String等类型,那么不需要自定义消息转换器; 消息转换器是SpringBoot处理前端传输的数据,并转换成接口参数的类型的转换器,转换前、转换后还支持自定义插件处理。

lzhfdxhxm的博客 1万+

决策规划算法四:Piecewise Jerk Path Optimizer

一,问题分析 路径规划的本质目的:规划出一条安全(无碰撞),舒适(平滑),符合车辆运动学的轨迹。 如下图所示,决策算法开辟凸空间后,路径规划算法用数值优化的方法搜索出一条最优路径,即将问题转化为二次规划的问题,采用二次规划的求解器进行求解。 二次规划问题的求解顺序: 1,确定优化变量 2,确定目标函数 3,确定约束条件 4,将目标函数和约束条件变形为二次规划的标准形式 5,用二次规划求解器进行求解,获得优化变量的序列,使得目标函数取得最小值。 注:路径的最终表达式为:,..

肥嘟嘟的左卫门 8560

深入解析“PROJ: proj_create_from_database: Cannot find proj.db”错误:从环境配置到打包实战

本文深入解析了“PROJ: proj_create_from_database: Cannot find proj.db”错误的根源与解决方案,涵盖环境配置、PyInstaller打包及跨平台兼容性处理。通过详细分析PROJ库路径问题及GDAL依赖关系,提供动态路径设置、资源文件打包等实战技巧,帮助开发者高效解决地理数据处理中的常见错误。

weixin_29074409的博客 444

文件的读写基本操作

一、文件是计算机中数据持久化存储的表现形式 读写文件标准操作格式1: 1、打开文件:file1 = open('文件名','读写模式') 2、操作文件 3、关闭文件:file1.close() 文件操作完毕后必须关闭,否则长期保持对文件的连接状态,造成内存溢出的现象发生 读写文件操作格式2: # 1、打开文件 file1 = open('demo.txt','w') # 2、操作文件 file1.write('hello world') # 3、关闭文件 file1.close() 1、打开文件:wi

范高伦的博客 1万+

【项目实战】TARA威胁分析和风险评估

TARA是信息安全领域中的一种风险评估方法,在汽车信息安全的上下文中,TARA分析特别重要,因为它可以帮助识别和管理与智能网联车辆相关的各种威胁,包括数据泄露、未经授权的访问、远程操控等。通过TARA分析,企业可以制定出针对性的安全目标、产品要求和产品安全声明,以确保汽车及其零部件符合相关的信息安全标准和法规。此外,TARA分析还可以与数字化建模系统结合,以更系统化和高效的方式进行风险评估和管理。

奶爸的编程之路,也就一周冷个三天 2709

【日常记录】SpringBoot接口支持文件上传和对象传递

需求:规则引擎开发中,规则录入时,需要支持规则内部条件批量导入,但是架构中没有相应的文件服务支撑,需要在内存解析,所以,单接口需要同时支持文件上传和对象传递。

爱摸鱼的小河马 654

【MTK平台】【wpa_supplicant】关于wpa_supplicant/p2p_supplicant.c文件的介绍

本文主要介绍external/wpa_supplicant_8/wpa_supplicant/p2p_supplicant.c 这个文件这个文件里面有个核心的方法就是。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 724

【腾讯小龙虾 WorkBuddy 专栏 03】技能(Skills)制作全教程!自定义技能编写、导出分享、导入使用一步到位

🔥腾讯AI智能体WorkBuddy自定义技能全攻略 本文为零基础用户提供WorkBuddy自定义技能的完整教程,涵盖技能概念、编写规范到实操全流程。核心内容包括: 技能本质:标准化任务指令模板,可固化重复操作流程 三大价值:一键执行重复任务/跨设备共享/降低使用门槛 实操演示:以"桌面文档自动分类"为例,分步讲解编写、测试、导出 共享方案:支持单技能/批量导出,通过任意渠道传输分享 导入指南:3秒完成他人技能加载,并提供常见问题解决方案 高阶优化:增加异常处理、版本管理等提升技能普适性

AI人人懂 2944

spring boot项目同时传递参数和文件的多种方式

在开发接口中,遇到了需要同时接收参数和文件的情况,可以有多种方式实现文件+参数的接收,这里基于spring boot 3 + vue 3 + axios,做一个简单的代码演示。

kangaroo的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring-boot的文件上传和下载

文件的上传和下载是所有后端程序员会经常用到的操作,最近学习了java和spring-boot以后就想着动手做一个文件上传和下载的demo示例出来, 先创建一个spring-boot项目,创建成功以后的目录如下: 在这里,我创建了一个控制器的包,里边包含了一个名为FileController.java的类,专门用于存放文件相关操作的。 首先来做文件上传。 先创建一个upload的html文件,代码...

逍遥生的博客 3万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring Boot 实现文件上传和下载

通过本文的介绍,你已经学会了如何在Spring Boot中实现文件的上传和下载功能。文件上传通过类处理,而文件下载则通过实现。这些功能在大多数Web应用中都非常实用,希望本文能帮助你更好地理解和应用这些技术。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章。

ning的博客 1815

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

spring boot 文件上传

*uploadFile()方法处理路径为“/uploadFile”的POST请求,对上传文件进行处理。#thymeleaf对html的标签约束非常严格,所有的标签必须有开有闭,比如#<br></br>或者<br/>是可以的,但是<br>会报错,配置#spring.thymeleaf.mode=LEGACYHTML5 目的就是为了解决这个问题,可以使页面#松校验。参数),fileUpload参数名必须与upload.html页面中上传文件<input>框中的name属性值一致。

daqi1983的博客 911

Spring Boot 实现文件上传

Spring Boot 实现文件上传,并使用 Hutool 工具库

yyhyc0的博客 1123
上一篇: 小白需懂的异步请求的处理
下一篇: 不得不知道的Spring Security的基本原理
新时代Java农民工
博客等级 码龄7年 16粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值