SpringBoot 文件上传(二)

上一节讲解了如何利用MultipartFile接收浏览器端上传的文件,这节讲解服务器端如何将文件保存到本地目录下,下节讲解服务端如何将文件保存在阿里云上。

本节需要解决两个难点:

  1. 文件重名问题
  2. 文件大小限制问题

存储文件

首先解决如何存储文件的问题,调用MultipartFile提供的方法transferTo

  • 方法名:transferTo
  • 方法参数:File类型
    @PostMapping("/upload")public Result upload(String username, Integer age,MultipartFile image) throws IOException {log.info("文件上传:{},{},{}",username,age,image);//存储到本地文件中image.transferTo(new File("C:\\Users\\luoting\\Desktop\\codeLearn\\java\\day11-SpringBootWeb案例\\01.txt"));return Result.success();}

但是01.txt固定了文件的名称与类型,所以我们需要解决文件名称和类型的问题

文件类型

MultipartFile提供的方法能够获取客户端传递的原始文件名,通过截取字串的操作获取文件类型

//文件类型   123.1.1.jpg
String originalFilename = image.getOriginalFilename();
//我们需要最后一个点后面的部分
//1、获取最后一个点的坐标
int index=originalFilename.lastIndexOf(".");
//2、截取子串
String extraName = originalFilename.substring(index);

文件名

利用UUID生成唯一的文件名

//文件名
//利用UUID生成
String basicName= UUID.randomUUID().toString();
//生成最终的文件名
String fileName=basicName+extraName;

 最终代码

    @PostMapping("/upload")public Result upload(String username, Integer age,MultipartFile image) throws IOException {log.info("文件上传:{},{},{}",username,age,image);//(一)文件类型   123.1.1.jpgString originalFilename = image.getOriginalFilename();//我们需要最后一个点后面的部分//1、获取最后一个点的坐标int index=originalFilename.lastIndexOf(".");//2、截取子串String extraName = originalFilename.substring(index);//(二)文件名//利用UUID生成String basicName= UUID.randomUUID().toString();//生成最终的文件名String fileName=basicName+extraName;//(三)存储到本地文件中image.transferTo(new File("C:\\Users\\luoting\\Desktop\\codeLearn\\java\\day11-SpringBootWeb案例\\"+fileName));return Result.success();}

用postman测试post文件

注意:

  • post请求的数据要填写在请求体(body)中
  • 选择form-data方式
  • 文件数据记得更改为文件类型

效果:在对应位置存放了相应的文件

 文件大小

在SpringBoot中,默认单个文件的最大上传大小为1M,如果要更改,则需要在application.propertity中增加如下配置:

配置单个文件和单个请求的不同是:可以一次请求上传多个文件

注意配置项只需要记住一个关键词即可:multipart

#配置单个文件上传的最大大小
spring.servlet.multipart.max-file-size=10MB
#配置单个请求上传的最大大小
spring.servlet.multipart.max-request-size=100MB

本地存储方式的缺点

  1. 客户端无法直接访问服务端存储的文件
  2. 如果要存储大量文件,服务端的负荷很重
  3. 如果服务端发生故障,则存储的数据都会失效

于是,下节讲解如何存储到阿里云,当然也可以通过搭建集群的方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/283994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab|基于条件风险价值CVaR的微网动态定价与调度策略

目录 1 主要内容 模型示意图 电能交易流程 模型亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序复现文章《A cooperative Stackelberg game based energy management considering price discrimination and risk assessment》,建立基于主从博弈的考虑…

HTML5和CSS3笔记

一:网页结构(html): 1.1:页面结构: 1.2:标签类型: 1.2.1:块标签: 1.2.2:行内标签: 1.2.3:行内块标签: 1.2.4:块标签与行…

Hive 数据迁移与备份

迁移类型 同时迁移表及其数据(使用import和export) 迁移步骤 将表和数据从 Hive 导出到 HDFS将表和数据从 HDFS 导出到本地服务器将表和数据从本地服务器复制到目标服务器将表和数据从目标服务器上传到目标 HDFS将表和数据从目标 HDFS 上传到目标 Hiv…

rider下ef core迁移

新建数据库 create database mockstu新建web项目 安装Microsoft.EntityFrameworkCore.SqlServer包 设置连接字符串 新建model using MockStuWeb.Models.EnumTypes; using System.ComponentModel.DataAnnotations;namespace MockStuWeb.Models {/// <summary>/// 学生…

SpringCloudAlibaba Nacos配置及应用

Nacos搭建及配置 nacos本机服务搭建 windows上搭建单机nacos&#xff1a; Releases alibaba/nacos GitHub 下载安装包 下载本地&#xff0c;解压&#xff0c;直接运行&#xff08;保证安装包的绝度路径只有英文字符&#xff0c;有中文会导致运行失败&#xff09;&#xff…

PHP 读取嵌入式数据 SQLite3

SQLite3 属于轻量级开源的嵌入式关系型数据库&#xff0c;但它支持 ACID(Atomicity,Consistency,Isolation,Durability) 事务。 SQLite Download Page: https://www.sqlite.org/download.html 第一步&#xff1a;在 php.ini 中开启 extensionsqlite3 第二步&#xff1a;连接数…

阿里云OSS存储的视频如何加水印

OSS是不能进行视频添加水印的&#xff0c;可以图片添加水印。 您可以在视频点播中进行配置&#xff1a; https://help.aliyun.com/zh/vod/user-guide/video-watermarks?spma2c4g.11186623.0.i2 原来的业务代码都是使用python 对oss的 视频进行上传 的,上传的视频路径已经保存到…

竞赛 opencv 图像识别 指纹识别 - python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于机器视觉的指纹识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适…

局域网的学习

什么是局域网&#xff1f;_哔哩哔哩_bilibili 家里接入WIFI的设备&#xff0c;相互之间就组成了一个局域网。 设备接入路由器的方法有两种&#xff1a; 一种是通过路由器发射的无线信号进行无线接入。 另一种是借助路由器上的RJ45网口进行有线接入。 设备接入路由器后&…

Deconstructing Denoising Diffusion Models for Self-Supervised Learning

开头说点题外话&#xff1a;这篇可谓是大咖云集啊&#xff0c;刘壮、谢赛宁、何凯明这些耳熟能详的名字&#xff0c;并且这篇论文一些人也觉得分析特别到位&#xff0c;不愧是大佬视角&#xff0c;配得上“解构”两个字&#xff1b;很巧的是&#xff0c;本科阶段的团队导师也是…

生产计划数据模型,实现能源企业数字化高效管理

随着市场经济的快速发展&#xff0c;能源企业在经济发展中的地位也随之提高。但由于能源企业在生产计划经济管理上存在指标不平衡、市场观念落后和环保意识欠缺等问题&#xff0c;导致企业的经济效益降低。目前&#xff0c;提高企业的生产计划管理是改善能源企业现状最有利的途…

python与excel第一节

python与excel第一节 由于excel在日常办公中大量使用&#xff0c;我们工作中常常会面对高频次或者大量数据的情况。使用python语言可以更加便捷的处理excel。 python与vba的比较 python语法更加简洁&#xff0c;相较于vba冗长复杂的语法&#xff0c;python更加容易学习。 p…

transformer的学习:Attention is all you need

目录 整体概述&#xff1a;​编辑​编辑 encoder&#xff1a; embedding&#xff1a; ​编辑 self-attention&#xff1a; 向量的相似度计算&#xff1a; qkv怎么来的​编辑 softmax&#xff1a; code multi-head-attention 位置编码&#xff1a; 残差&&FFN&…

基于树莓派实现 --- 智能家居

最效果展示 演示视频链接&#xff1a;基于树莓派实现的智能家居_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tr421n7BM/?spm_id_from333.999.0.0 &#xff08;PS&#xff1a;房屋模型的搭建是靠纸板箱和淘宝买的家居模型&#xff0c;户型参考了留学时短租的公寓~&a…

Prometheus+Grafana 监控Tongweb嵌入式(by lqw)

文章目录 1.思路2.部署准备3.Grafana仪表盘json文件下载4.tw嵌入式jar包本地引入依赖并测试运行5.运行jmx_prometheus_javaagent-0.19.0.jar形式获取监控数据&#xff08;方法一&#xff09;6.使用Actuator 获取监听数据&#xff08;方法二&#xff09;7.Prometheus部署8.Prome…

初级爬虫实战——哥伦比亚大学新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

Gradle v8.5 笔记 - 从入门到进阶(基于 Kotlin DSL)

目录 一、前置说明 二、Gradle 启动&#xff01; 2.1、安装 2.2、初始化项目 2.3、gradle 项目目录介绍 2.4、Gradle 项目下载慢&#xff1f;&#xff08;万能解决办法&#xff09; 2.5、Gradle 常用命令 2.6、项目构建流程 2.7、设置文件&#xff08;settings.gradle…

二.寄存器

1. 2. 例如&#xff1a;h即为high&#xff08;高位&#xff09;&#xff0c;l即为low&#xff08;低位&#xff09; 3.一个字是两个字节 4.在写一条汇编指令或一个寄存器的名称时不区分大小写。 5.al&#xff0c;ah&#xff0c;ax在接受汇编指令时&#xff0c;并不相等&…

阿猪写作能用吗 #媒体#微信

阿猪写作是一个非常实用的论文写作工具&#xff0c;它不仅能帮助用户快速完成论文写作&#xff0c;还可以提供查重降重的功能&#xff0c;帮助用户确保论文的原创性。在当今社会&#xff0c;论文写作是学术界和科研领域最重要的工作之一&#xff0c;而阿猪写作的出现无疑是给这…